aboutsummaryrefslogtreecommitdiffstats
path: root/icefuzz/tests/osc/osc.py
diff options
context:
space:
mode:
Diffstat (limited to 'icefuzz/tests/osc/osc.py')
-rwxr-xr-xicefuzz/tests/osc/osc.py75
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)