| #!/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) |