2 from string
import digits
5 ## dictionary of properties of signals that are supported.
18 ########### common bsv templates ############
19 assign_cell
='''cell{0}_out=wrmux{0}=={1}?'''
20 # first argument is the io-cell number being assigned.
21 # second argument is the mux value.
22 # Third argument is the signal from the pinmap file
24 rule assign_{2}_on_cell{0}(wrmux{0}=={1});
28 #########################################
30 pinmap_file
=open("./pinmap.txt","r")
31 for lineno
,line
in enumerate(pinmap_file
):
35 print("ERROR: Parameter N_IO("+str(N_IO
)+") is less than the pin number in line: "+str(lineno
)+" of pinmap.txt")
37 ######## Mux each generic IO cell with the mapping######
38 # provided in the pinmap file
39 pinmux
=pinmux
+" cell"+str(line1
[0])+"_out="
41 while(i
<len(line1
)-1):
42 pinmux
=pinmux
+"wrmux"+str(line1
[0])+"=="+str(i
)+"?"+line1
[i
+1]+"_io:"
43 if(i
+2==len(line1
)-1):
44 pinmux
=pinmux
+line1
[i
+2]+"_io"
49 ########################################################
51 ###### check each cell if "peripheral input/inout" then assign its wire ########
52 ## Here we check the direction of each signal in the dictionary.
53 ## We choose to keep the dictionary within the code and not user-input
54 ## since the interfaces are always standard and cannot change from user-to-user.
55 ## Plus this also reduces human-error as well :)
56 for i
in range(0,len(line1
)-1):
57 digits
= str.maketrans(dict.fromkeys('0123456789'))
58 temp
=line1
[i
+1].translate(digits
)
59 x
=dictionary
.get(temp
);
61 print("Error: The signal : "+str(line1
[i
+1])+" in lineno: "+str(lineno
)+"of pinmap.txt is not present in the current dictionary.\nSoln: Either update the dictionary or fix typo.")
64 print(line1
[i
+1]+" "+x
)
65 pinmux
=pinmux
+input_wire
.format(line1
[0],i
,"wr"+line1
[i
+1])+"\n"
67 print(line1
[i
+1]+" "+x
)
68 pinmux
=pinmux
+input_wire
.format(line1
[0],i
,"wr"+line1
[i
+1]+"_in")+"\n"
69 ################################################################################
70 ###########################################