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