diff options
| -rw-r--r-- | src/main/stanza/chirrtl.stanza | 12 | ||||
| -rw-r--r-- | test/chirrtl/wacc-wdc.fir | 6 |
2 files changed, 8 insertions, 10 deletions
diff --git a/src/main/stanza/chirrtl.stanza b/src/main/stanza/chirrtl.stanza index 9b3b90ab..9fc471fa 100644 --- a/src/main/stanza/chirrtl.stanza +++ b/src/main/stanza/chirrtl.stanza @@ -272,15 +272,15 @@ defn remove-chirrtl (c:Circuit) : (s:CDefMemory) : mport-types[name(s)] = type(s) val stmts = Vector<Stmt>() - val naddr = firrtl-gensym(`GEN,sh) + ;val naddr = firrtl-gensym(`GEN,sh) val taddr = UIntType(IntWidth(max(1,ceil-log2(size(s))))) - add(stmts,DefPoison(info(s),naddr,taddr)) - val ndata = firrtl-gensym(`GEN,sh) + ;add(stmts,DefPoison(info(s),naddr,taddr)) + ;val ndata = firrtl-gensym(`GEN,sh) val tdata = type(s) - add(stmts,DefPoison(info(s),ndata,tdata)) + ;add(stmts,DefPoison(info(s),ndata,tdata)) defn set-poison (vec:List<MPort>,addr:Symbol) -> False : for r in vec do : - add(stmts,Connect(info(s),SubField(SubField(Ref(name(s),ut),name(r),ut),addr,taddr),Ref(naddr,taddr))) + add(stmts,IsInvalid(info(s),SubField(SubField(Ref(name(s),ut),name(r),ut),addr,taddr))) add(stmts,Connect(info(s),SubField(SubField(Ref(name(s),ut),name(r),ut),`clk,taddr),clk(r))) defn set-enable (vec:List<MPort>,en:Symbol) -> False: for r in vec do : @@ -291,7 +291,7 @@ defn remove-chirrtl (c:Circuit) : defn set-write (vec:List<MPort>,data:Symbol,mask:Symbol) -> False : val tmask = create-mask(type(s)) for r in vec do : - add(stmts,Connect(info(s),SubField(SubField(Ref(name(s),ut),name(r),ut),data,tdata),Ref(ndata,tdata))) + add(stmts,IsInvalid(info(s),SubField(SubField(Ref(name(s),ut),name(r),ut),data,tdata))) for x in create-exps(SubField(SubField(Ref(name(s),ut),name(r),ut),mask,tmask)) do : add(stmts,Connect(info(s),x,zero)) diff --git a/test/chirrtl/wacc-wdc.fir b/test/chirrtl/wacc-wdc.fir index b66799b3..6610d295 100644 --- a/test/chirrtl/wacc-wdc.fir +++ b/test/chirrtl/wacc-wdc.fir @@ -29,12 +29,10 @@ circuit top : ; CHECK: write-latency => 1 ; CHECK: read-latency => 0 ; CHECK: writer => a -; CHECK: poison GEN_0 : UInt<4> -; CHECK: poison GEN_1 : { a : UInt<4>, b : UInt<4>} -; CHECK: m.a.addr <= GEN_0 +; CHECK: m.a.addr is invalid ; CHECK: m.a.clk <= clk ; CHECK: m.a.en <= UInt("h0") -; CHECK: m.a.data <= GEN_1 +; CHECK: m.a.data is invalid ; CHECK: m.a.mask.a <= UInt("h0") ; CHECK: m.a.mask.b <= UInt("h0") ; CHECK: p <= UInt("h1") |
