<@U01SBMJT5BP>: I was wondering if you might cons...
# xyce
t
@User: I was wondering if you might consider implementing my LUT extension for digital components for ngspice in Xyce. Apart from ngspice using
A
for digital devices where Xyce uses
U
, the general implementation is very similar in both simulators. The idea here is that you have a single digital behavioral device type called "LUT" (look-up table) that can arbitrarily map any combinatorial function of N inputs and M outputs. It declares its N and M inputs and outputs, and one extra parameter called
table_values
where
table_values
is a character string representing the output values for every input combination of 0 and 1. So
table_values="01"
is a buffer,
table_values="0001"
is a 2-input AND gate,
table_values="1111100010001000"
is a 2x2-input OAI gate. It has the great advantage of (1) being easy to implement, and (2) being able to be mapped by a simple script to the entire combinatorial logic gate set of any standard cell library. For the ngspice version, I wrote a script that parses a standard cell library liberty file for all the "function()" records, decodes the function, and then automatically converts any SPICE netlist using standard cells to its digital equivalent. I have used that process to do mixed-mode simulations of complete RISC-V cores in ngspice.