mirror of https://github.com/openXC7/prjxray.git
iob minitest
Signed-off-by: John McMaster <johndmcmaster@gmail.com>
This commit is contained in:
parent
3fa5df7cb1
commit
379ed08344
|
|
@ -12,9 +12,12 @@ clean:
|
|||
build/env:
|
||||
test "$(XRAY_PART)" = "xc7a50tfgg484-1"
|
||||
|
||||
build/roi_roi_io.diff:
|
||||
build/roi_io.diff:
|
||||
$(MAKE) -f diff.mk OUT_DIFF=build/roi_io.diff PRJL=roi_io_a PRJR=roi_io_b
|
||||
|
||||
build/roi_prop.diff:
|
||||
$(MAKE) -f diff.mk OUT_DIFF=build/roi_prop.diff PRJL=roi_prop_a PRJR=roi_prop_b
|
||||
|
||||
build/PULLTYPE/run.ok:
|
||||
PROJECT=PULLTYPE bash runme_tcl.sh
|
||||
diff build/PULLTYPE/design_{PULLDOWN,KEEPER}.bits || true
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@ set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_01) IOSTANDARD LVCMOS33" [get_po
|
|||
set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_02) IOSTANDARD LVCMOS33" [get_ports di]
|
||||
set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_03) IOSTANDARD LVCMOS33" [get_ports do]
|
||||
|
||||
# set_property roi/dut
|
||||
|
||||
create_pblock roi
|
||||
set_property EXCLUDE_PLACEMENT 1 [get_pblocks roi]
|
||||
add_cells_to_pblock [get_pblocks roi] [get_cells roi]
|
||||
|
|
|
|||
|
|
@ -18,3 +18,8 @@ set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_IBUF]
|
|||
place_design
|
||||
route_design
|
||||
|
||||
# set port [create_port -direction OUT myport]
|
||||
# set_property -dict "PACKAGE_PIN D19 IOSTANDARD LVCMOS33" $port
|
||||
# set_property PULLTYPE PULLUP $port
|
||||
# set_property PULLTYPE PULLDOWN $port
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,16 @@
|
|||
/*
|
||||
IOBUF
|
||||
Not a primitive?
|
||||
Looks like it has an OBUFT
|
||||
|
||||
|
||||
Output buffer family:
|
||||
OBUF
|
||||
OBUFDS
|
||||
OBUFT
|
||||
OBUFTDS
|
||||
*/
|
||||
|
||||
`ifndef ROI
|
||||
ERROR: must set ROI
|
||||
`endif
|
||||
|
|
@ -89,3 +102,82 @@ module roi_io_b(input clk, input [255:0] din, output [255:0] dout);
|
|||
|
||||
endmodule
|
||||
|
||||
/*
|
||||
For some reason this doesn't diff
|
||||
Was this optimized out?
|
||||
|
||||
ERROR: [Place 30-69] Instance roi/dut/OBUFT (OBUFT) is unplaced after IO placer
|
||||
ERROR: [Place 30-68] Instance roi/dut/OBUFT (OBUFT) is not placed
|
||||
*/
|
||||
|
||||
/*
|
||||
module roi_prop_a(input clk, input [255:0] din, output [255:0] dout);
|
||||
assign dout[0] = din[0] & din[1];
|
||||
|
||||
//(* LOC="D19", KEEP, DONT_TOUCH *)
|
||||
(* KEEP, DONT_TOUCH *)
|
||||
IOBUF #(
|
||||
.DRIVE(8),
|
||||
.IBUF_LOW_PWR("TRUE"),
|
||||
.IOSTANDARD("DEFAULT"),
|
||||
.SLEW("SLOW")
|
||||
) dut (
|
||||
.O(dout[1]),
|
||||
.I(din[0]),
|
||||
.T(din[1]));
|
||||
endmodule
|
||||
|
||||
module roi_prop_b(input clk, input [255:0] din, output [255:0] dout);
|
||||
assign dout[0] = din[0] & din[1];
|
||||
|
||||
//(* LOC="D19", KEEP, DONT_TOUCH *)
|
||||
(* KEEP, DONT_TOUCH *)
|
||||
IOBUF #(
|
||||
.DRIVE(12),
|
||||
.IBUF_LOW_PWR("TRUE"),
|
||||
.IOSTANDARD("DEFAULT"),
|
||||
.SLEW("SLOW")
|
||||
) dut (
|
||||
.O(dout[1]),
|
||||
.I(din[0]),
|
||||
.T(din[1]));
|
||||
endmodule
|
||||
*/
|
||||
|
||||
/*
|
||||
ERROR: [DRC REQP-1581] obuf_loaded: OBUFT roi/dut pin O drives one or more invalid loads. The loads are: dout_shr[1]_i_1
|
||||
ERROR: [Place 30-69] Instance roi/dut (OBUFT) is unplaced after IO placer
|
||||
hmm
|
||||
Abandoning verilog approach
|
||||
tcl seems to work well, just use it directly
|
||||
*/
|
||||
module roi_prop_a(input clk, input [255:0] din, output [255:0] dout);
|
||||
(* LOC="D19", KEEP, DONT_TOUCH *)
|
||||
//(* KEEP, DONT_TOUCH *)
|
||||
OBUFT #(
|
||||
.DRIVE(8),
|
||||
.IOSTANDARD("DEFAULT"),
|
||||
.SLEW("SLOW")
|
||||
) dut (
|
||||
//.O(dout[1]),
|
||||
.O(),
|
||||
.I(din[0]),
|
||||
.T(din[1]));
|
||||
endmodule
|
||||
|
||||
module roi_prop_b(input clk, input [255:0] din, output [255:0] dout);
|
||||
(* LOC="D19", KEEP, DONT_TOUCH *)
|
||||
//(* KEEP, DONT_TOUCH *)
|
||||
(* KEEP, DONT_TOUCH *)
|
||||
OBUFT #(
|
||||
.DRIVE(12),
|
||||
.IOSTANDARD("DEFAULT"),
|
||||
.SLEW("SLOW")
|
||||
) dut (
|
||||
//.O(dout[1]),
|
||||
.O(),
|
||||
.I(din[0]),
|
||||
.T(din[1]));
|
||||
endmodule
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue