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))
--- /dev/null
+//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
);
endmodule
+module GP_OBUFT(input IN, input OE, output OUT);
+ GP_IOBUF _TECHMAP_REPLACE_ (
+ .IN(IN),
+ .OE(OE),
+ .IO(OUT),
+ .OUT()
+ );
+endmodule
+
module \$lut (A, Y);
parameter WIDTH = 0;
parameter LUT = 0;
assign OUT = IN;
endmodule
-module GP_IOBUF(input IN, input DIR, output OUT, inout IO);
+module GP_IOBUF(input IN, input OE, output OUT, inout IO);
assign IN = IO;
- assign DIR = OE ? OUT : 1'bz;
+ assign IO = OE ? OUT : 1'bz;
endmodule
module GP_INV(input IN, output OUT);
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("dfflibmap -liberty +/greenpak4/gp_dff.lib");
run("techmap -map +/greenpak4/cells_map.v");
run("dffinit -ff GP_DFF Q INIT");