From a613f171aeb8703b6849a87b73899389fb9912d8 Mon Sep 17 00:00:00 2001 From: Andrew Zonenberg Date: Wed, 4 May 2016 15:55:16 -0700 Subject: [PATCH 1/4] Refactored synth_greenpak4 to use iopadmap for mapping GP_IOBUF/GP_OBUFT cells instead of extract --- techlibs/greenpak4/Makefile.inc | 1 - techlibs/greenpak4/cells_extract.v | 15 --------------- techlibs/greenpak4/synth_greenpak4.cc | 3 +-- 3 files changed, 1 insertion(+), 18 deletions(-) delete mode 100644 techlibs/greenpak4/cells_extract.v diff --git a/techlibs/greenpak4/Makefile.inc b/techlibs/greenpak4/Makefile.inc index 4e8e9415c..969b7c80d 100644 --- a/techlibs/greenpak4/Makefile.inc +++ b/techlibs/greenpak4/Makefile.inc @@ -2,7 +2,6 @@ OBJS += techlibs/greenpak4/synth_greenpak4.o OBJS += techlibs/greenpak4/greenpak4_counters.o -$(eval $(call add_share_file,share/greenpak4,techlibs/greenpak4/cells_extract.v)) $(eval $(call add_share_file,share/greenpak4,techlibs/greenpak4/cells_map.v)) $(eval $(call add_share_file,share/greenpak4,techlibs/greenpak4/cells_sim.v)) $(eval $(call add_share_file,share/greenpak4,techlibs/greenpak4/gp_dff.lib)) diff --git a/techlibs/greenpak4/cells_extract.v b/techlibs/greenpak4/cells_extract.v deleted file mode 100644 index 96feb7328..000000000 --- a/techlibs/greenpak4/cells_extract.v +++ /dev/null @@ -1,15 +0,0 @@ -//Wrapper module to patch up output of iopadmap -module GP_IOBUF(input IN, output OUT, input OE, inout IO); - - GP_IBUF ibuf( - .IN(IO), - .OUT(OUT) - ); - - $_TBUF_ tbuf( - .A(IN), - .E(OE), - .Y(OUT) - ); - -endmodule diff --git a/techlibs/greenpak4/synth_greenpak4.cc b/techlibs/greenpak4/synth_greenpak4.cc index 55412ea2b..fd7a8567a 100644 --- a/techlibs/greenpak4/synth_greenpak4.cc +++ b/techlibs/greenpak4/synth_greenpak4.cc @@ -176,8 +176,7 @@ struct SynthGreenPAK4Pass : public ScriptPass if (check_label("map_cells")) { run("shregmap -tech greenpak4"); - run("iopadmap -bits -inpad GP_IBUF OUT:IN -outpad GP_OBUF IN:OUT -inoutpad GP_IBUF OUT:IN"); - run("extract -map +/greenpak4/cells_extract.v -verbose"); + run("iopadmap -bits -inpad GP_IBUF OUT:IN -outpad GP_OBUF IN:OUT -inoutpad GP_OBUF OUT:IN -toutpad GP_OBUFT OE:IN:OUT -tinoutpad GP_IOBUF OE:OUT:IN:IO"); run("dfflibmap -liberty +/greenpak4/gp_dff.lib"); run("techmap -map +/greenpak4/cells_map.v"); run("dffinit -ff GP_DFF Q INIT"); From dee1c27a19f91fb44df67b2ab9834ee8140772c4 Mon Sep 17 00:00:00 2001 From: Andrew Zonenberg Date: Wed, 4 May 2016 17:03:45 -0700 Subject: [PATCH 2/4] Renamed module parameter --- techlibs/greenpak4/cells_sim.v | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/techlibs/greenpak4/cells_sim.v b/techlibs/greenpak4/cells_sim.v index 6c3ffcaa0..6cf29fe6e 100644 --- a/techlibs/greenpak4/cells_sim.v +++ b/techlibs/greenpak4/cells_sim.v @@ -278,9 +278,9 @@ endmodule module GP_SHREG(input nRST, input CLK, input IN, output OUTA, output OUTB); - parameter OUTA_DELAY = 1; + parameter OUTA_TAP = 1; parameter OUTA_INVERT = 0; - parameter OUTB_DELAY = 1; + parameter OUTB_TAP = 1; reg[15:0] shreg = 0; @@ -294,8 +294,8 @@ module GP_SHREG(input nRST, input CLK, input IN, output OUTA, output OUTB); end - assign OUTA = (OUTA_INVERT) ? ~shreg[OUTA_DELAY - 1] : shreg[OUTA_DELAY - 1]; - assign OUTB = shreg[OUTB_DELAY - 1]; + assign OUTA = (OUTA_INVERT) ? ~shreg[OUTA_TAP - 1] : shreg[OUTA_TAP - 1]; + assign OUTB = shreg[OUTB_TAP - 1]; endmodule From 3486637b19030bc65af77c99c282ff5a7e610ee8 Mon Sep 17 00:00:00 2001 From: Andrew Zonenberg Date: Wed, 4 May 2016 17:04:50 -0700 Subject: [PATCH 3/4] Changed port names in greenpak shregmap --- passes/techmap/shregmap.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/passes/techmap/shregmap.cc b/passes/techmap/shregmap.cc index 7a8495b79..766c1c65f 100644 --- a/passes/techmap/shregmap.cc +++ b/passes/techmap/shregmap.cc @@ -82,7 +82,7 @@ struct ShregmapTechGreenpak4 : ShregmapTech int i = 0; for (auto tap : taps) { newcell->setPort(i ? "\\OUTB" : "\\OUTA", tap.second); - newcell->setParam(i ? "\\OUTB_DELAY" : "\\OUTA_DELAY", tap.first + 1); + newcell->setParam(i ? "\\OUTB_TAP" : "\\OUTA_TAP", tap.first + 1); i++; } From 2096a05ec2aaecb89316c5a229b497c21c2327f9 Mon Sep 17 00:00:00 2001 From: Andrew Zonenberg Date: Wed, 4 May 2016 17:13:54 -0700 Subject: [PATCH 4/4] Changed order of passes for better handling of INIT attributes on "output reg" FFs --- techlibs/greenpak4/synth_greenpak4.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/techlibs/greenpak4/synth_greenpak4.cc b/techlibs/greenpak4/synth_greenpak4.cc index fd7a8567a..b7296055a 100644 --- a/techlibs/greenpak4/synth_greenpak4.cc +++ b/techlibs/greenpak4/synth_greenpak4.cc @@ -176,13 +176,13 @@ struct SynthGreenPAK4Pass : public ScriptPass if (check_label("map_cells")) { run("shregmap -tech greenpak4"); - run("iopadmap -bits -inpad GP_IBUF OUT:IN -outpad GP_OBUF IN:OUT -inoutpad GP_OBUF OUT:IN -toutpad GP_OBUFT OE:IN:OUT -tinoutpad GP_IOBUF OE:OUT:IN:IO"); run("dfflibmap -liberty +/greenpak4/gp_dff.lib"); - run("techmap -map +/greenpak4/cells_map.v"); run("dffinit -ff GP_DFF Q INIT"); run("dffinit -ff GP_DFFR Q INIT"); run("dffinit -ff GP_DFFS Q INIT"); run("dffinit -ff GP_DFFSR Q INIT"); + run("iopadmap -bits -inpad GP_IBUF OUT:IN -outpad GP_OBUF IN:OUT -inoutpad GP_OBUF OUT:IN -toutpad GP_OBUFT OE:IN:OUT -tinoutpad GP_IOBUF OE:OUT:IN:IO"); + run("techmap -map +/greenpak4/cells_map.v"); run("clean"); }