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