add bus bricks to c logic
This commit is contained in:
@@ -147,6 +147,18 @@ FAST void sim_gate_set_data(const struct Gate* const gate, const int addr, const
|
||||
assert(addr>=0 && addr<gate->data_size);
|
||||
gate->data[addr] = val;
|
||||
}
|
||||
FAST int sim_gate_get_word(const struct Gate* const gate, const int size, const int idx) {
|
||||
int val = 0;
|
||||
for(int i=0; i<idx; i++) {
|
||||
val += sim_gate_get_port(gate, idx+i) << i;
|
||||
}
|
||||
return val;
|
||||
}
|
||||
FAST void sim_gate_set_word(const struct Gate* const gate, const int size, const int idx, const int val) {
|
||||
for(int i=0; i<idx; i++) {
|
||||
sim_gate_set_port(gate, idx+i, (val>>i) & 1);
|
||||
}
|
||||
}
|
||||
|
||||
////
|
||||
|
||||
@@ -158,5 +170,9 @@ FAST void sim_gate_set_data(const struct Gate* const gate, const int addr, const
|
||||
#define getdata(i) sim_gate_get_data(gate, i)
|
||||
#define getportrising(i) sim_gate_get_port_rising(gate, i)
|
||||
#define getportfalling(i) sim_gate_get_port_falling(gate, i)
|
||||
#define copyword(size, iin, iout) for(int i=0;i<size;i++) { setport(iout+i, getport(iin+i)); }
|
||||
#define getword(size, idx) sim_gate_get_word(gate, size, idx)
|
||||
#define clearword(size, idx) for(int i=0;i<size;i++) { setport(idx+i, 0); }
|
||||
#define setword(size, idx, val) sim_gate_set_word(gate, size, idx, val)
|
||||
|
||||
#include "compiled_sim_gates.c"
|
||||
|
||||
Reference in New Issue
Block a user