add tristate buffer and test

This commit is contained in:
Pepijn de Vos 2019-10-28 15:18:01 +01:00
parent 9517525224
commit 903f997391
3 changed files with 21 additions and 2 deletions

View File

@ -302,6 +302,12 @@ module OBUF(output O, input I);
assign O = I; assign O = I;
endmodule endmodule
module TBUF (O, I, OEN);
input I, OEN;
output O;
assign O = OEN ? I : 1'bz;
endmodule
module GSR (input GSRI); module GSR (input GSRI);
wire GSRO = GSRI; wire GSRO = GSRI;
endmodule endmodule

View File

@ -174,7 +174,7 @@ struct SynthGowinPass : public ScriptPass
run("synth -run coarse"); run("synth -run coarse");
} }
if (!nobram && check_label("bram", "(skip if -nobram)")) if (!nobram && check_label("bram", "(skip if -nobram)"))
{ {
run("memory_bram -rules +/gowin/bram.txt"); run("memory_bram -rules +/gowin/bram.txt");
run("techmap -map +/gowin/brams_map.v -map +/gowin/cells_sim.v"); run("techmap -map +/gowin/brams_map.v -map +/gowin/cells_sim.v");
@ -230,7 +230,7 @@ struct SynthGowinPass : public ScriptPass
run("techmap -map +/gowin/cells_map.v"); run("techmap -map +/gowin/cells_map.v");
run("setundef -undriven -params -zero"); run("setundef -undriven -params -zero");
run("hilomap -singleton -hicell VCC V -locell GND G"); run("hilomap -singleton -hicell VCC V -locell GND G");
run("iopadmap -bits -inpad IBUF O:I -outpad OBUF I:O", "(unless -noiopads)"); run("iopadmap -bits -inpad IBUF O:I -outpad OBUF I:O, -toutpad TBUF OEN:I:O", "(unless -noiopads)");
run("dffinit -ff DFF Q INIT"); run("dffinit -ff DFF Q INIT");
run("clean"); run("clean");

View File

@ -0,0 +1,13 @@
read_verilog ../common/tribuf.v
hierarchy -top tristate
proc
tribuf
flatten
synth
equiv_opt -assert -map +/gowin/cells_sim.v -map +/simcells.v synth_gowin # equivalency check
design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design)
cd tristate # Constrain all select calls below inside the top module
#Internal cell type used. Need support it.
select -assert-count 1 t:TBUF
select -assert-count 2 t:IBUF
select -assert-none t:TBUF t:IBUF %% t:* %D