diff options
Diffstat (limited to 'icefuzz/tests/osc')
-rwxr-xr-x | icefuzz/tests/osc/osc.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/icefuzz/tests/osc/osc.py b/icefuzz/tests/osc/osc.py new file mode 100755 index 0000000..231ce01 --- /dev/null +++ b/icefuzz/tests/osc/osc.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 + +import os, sys + +device = "u4k" + +if not os.path.exists("./work_osc"): + os.mkdir("./work_osc") + +def run(route_fabric): + name = "./work_osc/osc_cbit_fabric_%d" % route_fabric + with open(name+'.v',"w") as f: + print(""" + module top( + input clkhfpu, + input clkhfen, + input clklfpu, + input clklfen, + output pin, + output pin2, + input data + ); + + wire clkhf; + SB_HFOSC #( + .CLKHF_DIV("%s") + ) hfosc ( + .CLKHFPU(clkhfpu), + .CLKHFEN(clkhfen), + .CLKHF(clkhf) + ); /* synthesis ROUTE_THROUGH_FABRIC = %d */ + + SB_IO #( + .PIN_TYPE(6'b 0101_00) + ) pin_obuf ( + .PACKAGE_PIN(pin), + .OUTPUT_CLK(clkhf), + .D_OUT_0(data) + ); + + wire clklf; + SB_LFOSC lfosc ( + .CLKLFPU(clklfpu), + .CLKLFEN(clklfen), + .CLKLF(clklf) + ); /* synthesis ROUTE_THROUGH_FABRIC = %d */ + + SB_IO #( + .PIN_TYPE(6'b 0101_00) + ) pin2_obuf ( + .PACKAGE_PIN(pin2), + .OUTPUT_CLK(clklf), + .D_OUT_0(data) + ); + + endmodule + """ % ( + "0b11", route_fabric, route_fabric + ), file=f) + + retval = os.system("bash ../../icecube.sh -" + device + " " + name+".v > ./work_osc/icecube.log 2>&1") + if retval != 0: + sys.stderr.write('ERROR: icecube returned non-zero error code\n') + sys.exit(1) + retval = os.system("../../../icebox/icebox_explain.py " + name+".asc > " + name+".exp") + if retval != 0: + sys.stderr.write('ERROR: icebox_explain returned non-zero error code\n') + sys.exit(1) + retval = os.system("../../../icebox/icebox_vlog.py " + name+".asc > " + name+".ve") + if retval != 0: + sys.stderr.write('ERROR: icebox_vlog returned non-zero error code\n') + sys.exit(1) + +run(0) +run(1) |