|
|
import numpy as np
|
|
|
import random
|
|
|
import time
|
|
|
import shutil
|
|
|
import os
|
|
|
|
|
|
DOFILE="run.do.in"
|
|
|
RAM1={
|
|
|
"instance":"/testbench/lpp_lfr_filter_1/IIR_CEL_f0_to_f1/IIR_CEL_CTRLR_v2_DATAFLOW_1/RAM_CTRLR_v2_1/memRAM/SRAM/axc/x0/a8to12/agen(0)/u0/u0/rp/rfd",
|
|
|
"abits":10,
|
|
|
"dbits":36,
|
|
|
"name":"RAM1.txt"
|
|
|
}
|
|
|
RAM2={
|
|
|
"instance":"/testbench/lpp_lfr_filter_1/YES_IIR_FILTER_f2_f3/IIR_CEL_CTRLR_v3_1/RAM_CTRLR_v2_2/memRAM/SRAM/axc/x0/a8to12/agen(0)/u0/u0/rp/rfd",
|
|
|
"abits":10,
|
|
|
"dbits":36,
|
|
|
"name":"RAM2.txt"
|
|
|
}
|
|
|
RAM3={
|
|
|
"instance":"/testbench/lpp_lfr_filter_1/YES_IIR_FILTER_f2_f3/IIR_CEL_CTRLR_v3_1/RAM_CTRLR_v2_1/memRAM/SRAM/axc/x0/a8to12/agen(0)/u0/u0/rp/rfd",
|
|
|
"abits":10,
|
|
|
"dbits":36,
|
|
|
"name":"RAM3.txt"
|
|
|
}
|
|
|
RAM4={
|
|
|
"instance":"/testbench/lpp_lfr_filter_1/cic_lfr_1/memRAM/SRAM/axc/x0/a8to12/agen(0)/u0/u0/rp/rfd",
|
|
|
"abits":10,
|
|
|
"dbits":36,
|
|
|
"name":"RAM4.txt"
|
|
|
}
|
|
|
RAM5={
|
|
|
"instance":"/testbench/lpp_lfr_filter_1/IIR_CEL_CTRLR_v2_1/IIR_CEL_CTRLR_v2_DATAFLOW_1/RAM_CTRLR_v2_1/memRAM/SRAM/axc/x0/a8to12/agen(0)/u0/u0/rp/rfd",
|
|
|
"abits":10,
|
|
|
"dbits":36,
|
|
|
"name":"RAM5.txt"
|
|
|
}
|
|
|
RAM6={
|
|
|
"instance":"/testbench/lpp_lfr_filter_1/cic_lfr_1/memRAM/SRAM/axc/x0/a8to12/agen(1)/u0/u0/rp/rfd",
|
|
|
"abits":10,
|
|
|
"dbits":36,
|
|
|
"name":"RAM6.txt"
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
RAMS=[RAM1,RAM2,RAM3,RAM4,RAM5,RAM6]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def mkram(length,width,gentype='rand',**kwargs):
|
|
|
return toBinStr(gen(length,width,gentype,**kwargs),width)
|
|
|
|
|
|
def toBinStr(data,width):
|
|
|
return [format(val, 'b').zfill(width) for val in data]
|
|
|
|
|
|
def gen(length,width,gentype='rand',**kwargs):
|
|
|
LUT={
|
|
|
"rand":gen_rand,
|
|
|
"const":gen_const
|
|
|
}
|
|
|
return LUT[gentype](length,width,**kwargs)
|
|
|
|
|
|
def gen_rand(length,width,**kwargs):
|
|
|
random.seed(time.time())
|
|
|
mask=(2**width)-1
|
|
|
data=[]
|
|
|
for line in range(length):
|
|
|
data.append(int(2**32*random.random())&mask)
|
|
|
return data
|
|
|
|
|
|
def gen_const(length,width, value):
|
|
|
mask=(2**width)-1
|
|
|
return [value&mask for i in range(length)]
|
|
|
|
|
|
def save(data,file):
|
|
|
f = open(file,"w")
|
|
|
[f.write(line+'\n') for line in data]
|
|
|
f.close()
|
|
|
|
|
|
if not os.path.exists("simulation"):
|
|
|
os.mkdir('simulation')
|
|
|
|
|
|
args=""
|
|
|
for RAM in RAMS:
|
|
|
save(mkram(2**RAM["abits"],RAM["dbits"],gentype='rand',value=0),""+RAM["name"])
|
|
|
args = args +"mem load -i {RAMFILE} -format binary {PATH}\n".format(RAMFILE=RAM["name"], PATH=RAM["instance"])
|
|
|
with open("run.do.in","r") as inFile, open("run.do","w") as outFile:
|
|
|
input = inFile.read()
|
|
|
outFile.write(input.replace("#RAM_INIT#",args))
|
|
|
|
|
|
W,H=8,100000
|
|
|
test = np.ones((H,W))*[(random.random()*65535)-32768 for col in range(W)]
|
|
|
np.savetxt("input.txt", test,fmt="%d", delimiter=" ")
|
|
|
|
|
|
|