rendered paste bodydp BlockRow1 (
in dataIn : tc( 256 );
out dataOut : tc( 256 );
in write : ns( 8 )
) {
reg data1 : tc( 32 );
reg data2 : tc( 32 );
reg data3 : tc( 32 );
reg data4 : tc( 32 );
reg data5 : tc( 32 );
reg data6 : tc( 32 );
reg data7 : tc( 32 );
reg data8 : tc( 32 );
sfg run {
data1 = write[7] ? dataIn[255:224] : data1;
data2 = write[6] ? dataIn[223:192] : data2;
data3 = write[5] ? dataIn[191:160] : data3;
data4 = write[4] ? dataIn[159:128] : data4;
data5 = write[3] ? dataIn[127:96] : data5;
data6 = write[2] ? dataIn[95:64] : data6;
data7 = write[1] ? dataIn[63:32] : data7;
data8 = write[0] ? dataIn[31:0] : data8;
dataOut = (data1 & 0xFFFFFFFF) # (data2 & 0xFFFFFFFF) # (data3 & 0xFFFFFFFF) # (data4 & 0xFFFFFFFF) # (data5 & 0xFFFFFFFF) # (data6 & 0xFFFFFFFF) # (data7 & 0xFFFFFFFF) # (data8 & 0xFFFFFFFF);
}
}
hardwired BlockRow1_Ctrl( BlockRow1 ) { run; }
dp BlockRow2 (
in dataIn : tc( 256 );
out dataOut : tc( 256 );
in write : ns( 8 )
) {
reg data1 : tc( 32 );
reg data2 : tc( 32 );
reg data3 : tc( 32 );
reg data4 : tc( 32 );
reg data5 : tc( 32 );
reg data6 : tc( 32 );
reg data7 : tc( 32 );
reg data8 : tc( 32 );
sfg run {
data1 = write[7] ? dataIn[255:224] : data1;
data2 = write[6] ? dataIn[223:192] : data2;
data3 = write[5] ? dataIn[191:160] : data3;
data4 = write[4] ? dataIn[159:128] : data4;
data5 = write[3] ? dataIn[127:96] : data5;
data6 = write[2] ? dataIn[95:64] : data6;
data7 = write[1] ? dataIn[63:32] : data7;
data8 = write[0] ? dataIn[31:0] : data8;
dataOut = (data1 & 0xFFFFFFFF) # (data2 & 0xFFFFFFFF) # (data3 & 0xFFFFFFFF) # (data4 & 0xFFFFFFFF) # (data5 & 0xFFFFFFFF) # (data6 & 0xFFFFFFFF) # (data7 & 0xFFFFFFFF) # (data8 & 0xFFFFFFFF);
}
}
hardwired BlockRow2_Ctrl( BlockRow2 ) { run; }
dp BlockRow3 (
in dataIn : tc( 256 );
out dataOut : tc( 256 );
in write : ns( 8 )
) {
reg data1 : tc( 32 );
reg data2 : tc( 32 );
reg data3 : tc( 32 );
reg data4 : tc( 32 );
reg data5 : tc( 32 );
reg data6 : tc( 32 );
reg data7 : tc( 32 );
reg data8 : tc( 32 );
sfg run {
data1 = write[7] ? dataIn[255:224] : data1;
data2 = write[6] ? dataIn[223:192] : data2;
data3 = write[5] ? dataIn[191:160] : data3;
data4 = write[4] ? dataIn[159:128] : data4;
data5 = write[3] ? dataIn[127:96] : data5;
data6 = write[2] ? dataIn[95:64] : data6;
data7 = write[1] ? dataIn[63:32] : data7;
data8 = write[0] ? dataIn[31:0] : data8;
dataOut = (data1 & 0xFFFFFFFF) # (data2 & 0xFFFFFFFF) # (data3 & 0xFFFFFFFF) # (data4 & 0xFFFFFFFF) # (data5 & 0xFFFFFFFF) # (data6 & 0xFFFFFFFF) # (data7 & 0xFFFFFFFF) # (data8 & 0xFFFFFFFF);
}
}
hardwired BlockRow3_Ctrl( BlockRow3 ) { run; }
dp BlockRow4 (
in dataIn : tc( 256 );
out dataOut : tc( 256 );
in write : ns( 8 )
) {
reg data1 : tc( 32 );
reg data2 : tc( 32 );
reg data3 : tc( 32 );
reg data4 : tc( 32 );
reg data5 : tc( 32 );
reg data6 : tc( 32 );
reg data7 : tc( 32 );
reg data8 : tc( 32 );
sfg run {
data1 = write[7] ? dataIn[255:224] : data1;
data2 = write[6] ? dataIn[223:192] : data2;
data3 = write[5] ? dataIn[191:160] : data3;
data4 = write[4] ? dataIn[159:128] : data4;
data5 = write[3] ? dataIn[127:96] : data5;
data6 = write[2] ? dataIn[95:64] : data6;
data7 = write[1] ? dataIn[63:32] : data7;
data8 = write[0] ? dataIn[31:0] : data8;
dataOut = (data1 & 0xFFFFFFFF) # (data2 & 0xFFFFFFFF) # (data3 & 0xFFFFFFFF) # (data4 & 0xFFFFFFFF) # (data5 & 0xFFFFFFFF) # (data6 & 0xFFFFFFFF) # (data7 & 0xFFFFFFFF) # (data8 & 0xFFFFFFFF);
}
}
hardwired BlockRow4_Ctrl( BlockRow4 ) { run; }
dp BlockRow5 (
in dataIn : tc( 256 );
out dataOut : tc( 256 );
in write : ns( 8 )
) {
reg data1 : tc( 32 );
reg data2 : tc( 32 );
reg data3 : tc( 32 );
reg data4 : tc( 32 );
reg data5 : tc( 32 );
reg data6 : tc( 32 );
reg data7 : tc( 32 );
reg data8 : tc( 32 );
sfg run {
data1 = write[7] ? dataIn[255:224] : data1;
data2 = write[6] ? dataIn[223:192] : data2;
data3 = write[5] ? dataIn[191:160] : data3;
data4 = write[4] ? dataIn[159:128] : data4;
data5 = write[3] ? dataIn[127:96] : data5;
data6 = write[2] ? dataIn[95:64] : data6;
data7 = write[1] ? dataIn[63:32] : data7;
data8 = write[0] ? dataIn[31:0] : data8;
dataOut = (data1 & 0xFFFFFFFF) # (data2 & 0xFFFFFFFF) # (data3 & 0xFFFFFFFF) # (data4 & 0xFFFFFFFF) # (data5 & 0xFFFFFFFF) # (data6 & 0xFFFFFFFF) # (data7 & 0xFFFFFFFF) # (data8 & 0xFFFFFFFF);
}
}
hardwired BlockRow5_Ctrl( BlockRow5 ) { run; }
dp BlockRow6 (
in dataIn : tc( 256 );
out dataOut : tc( 256 );
in write : ns( 8 )
) {
reg data1 : tc( 32 );
reg data2 : tc( 32 );
reg data3 : tc( 32 );
reg data4 : tc( 32 );
reg data5 : tc( 32 );
reg data6 : tc( 32 );
reg data7 : tc( 32 );
reg data8 : tc( 32 );
sfg run {
data1 = write[7] ? dataIn[255:224] : data1;
data2 = write[6] ? dataIn[223:192] : data2;
data3 = write[5] ? dataIn[191:160] : data3;
data4 = write[4] ? dataIn[159:128] : data4;
data5 = write[3] ? dataIn[127:96] : data5;
data6 = write[2] ? dataIn[95:64] : data6;
data7 = write[1] ? dataIn[63:32] : data7;
data8 = write[0] ? dataIn[31:0] : data8;
dataOut = (data1 & 0xFFFFFFFF) # (data2 & 0xFFFFFFFF) # (data3 & 0xFFFFFFFF) # (data4 & 0xFFFFFFFF) # (data5 & 0xFFFFFFFF) # (data6 & 0xFFFFFFFF) # (data7 & 0xFFFFFFFF) # (data8 & 0xFFFFFFFF);
}
}
hardwired BlockRow6_Ctrl( BlockRow6 ) { run; }
dp BlockRow7 (
in dataIn : tc( 256 );
out dataOut : tc( 256 );
in write : ns( 8 )
) {
reg data1 : tc( 32 );
reg data2 : tc( 32 );
reg data3 : tc( 32 );
reg data4 : tc( 32 );
reg data5 : tc( 32 );
reg data6 : tc( 32 );
reg data7 : tc( 32 );
reg data8 : tc( 32 );
sfg run {
data1 = write[7] ? dataIn[255:224] : data1;
data2 = write[6] ? dataIn[223:192] : data2;
data3 = write[5] ? dataIn[191:160] : data3;
data4 = write[4] ? dataIn[159:128] : data4;
data5 = write[3] ? dataIn[127:96] : data5;
data6 = write[2] ? dataIn[95:64] : data6;
data7 = write[1] ? dataIn[63:32] : data7;
data8 = write[0] ? dataIn[31:0] : data8;
dataOut = (data1 & 0xFFFFFFFF) # (data2 & 0xFFFFFFFF) # (data3 & 0xFFFFFFFF) # (data4 & 0xFFFFFFFF) # (data5 & 0xFFFFFFFF) # (data6 & 0xFFFFFFFF) # (data7 & 0xFFFFFFFF) # (data8 & 0xFFFFFFFF);
}
}
hardwired BlockRow7_Ctrl( BlockRow7 ) { run; }
dp BlockRow8 (
in dataIn : tc( 256 );
out dataOut : tc( 256 );
in write : ns( 8 )
) {
reg data1 : tc( 32 );
reg data2 : tc( 32 );
reg data3 : tc( 32 );
reg data4 : tc( 32 );
reg data5 : tc( 32 );
reg data6 : tc( 32 );
reg data7 : tc( 32 );
reg data8 : tc( 32 );
sfg run {
data1 = write[7] ? dataIn[255:224] : data1;
data2 = write[6] ? dataIn[223:192] : data2;
data3 = write[5] ? dataIn[191:160] : data3;
data4 = write[4] ? dataIn[159:128] : data4;
data5 = write[3] ? dataIn[127:96] : data5;
data6 = write[2] ? dataIn[95:64] : data6;
data7 = write[1] ? dataIn[63:32] : data7;
data8 = write[0] ? dataIn[31:0] : data8;
dataOut = (data1 & 0xFFFFFFFF) # (data2 & 0xFFFFFFFF) # (data3 & 0xFFFFFFFF) # (data4 & 0xFFFFFFFF) # (data5 & 0xFFFFFFFF) # (data6 & 0xFFFFFFFF) # (data7 & 0xFFFFFFFF) # (data8 & 0xFFFFFFFF);
}
}
hardwired BlockRow8_Ctrl( BlockRow8 ) { run; }
dp BlockDeMux (
in dataIn : tc( 256 );
out dataOut1, dataOut2, dataOut3, dataOut4, dataOut5, dataOut6, dataOut7, dataOut8 : tc( 256 );
in row : ns( 3 )
) {
sfg run {
dataOut1 = row == 0 ? dataIn : 0;
dataOut2 = row == 1 ? dataIn : 0;
dataOut3 = row == 2 ? dataIn : 0;
dataOut4 = row == 3 ? dataIn : 0;
dataOut5 = row == 4 ? dataIn : 0;
dataOut6 = row == 5 ? dataIn : 0;
dataOut7 = row == 6 ? dataIn : 0;
dataOut8 = row == 7 ? dataIn : 0;
}
}
hardwired BlockDeMux_Ctrl( BlockDeMux ) { run; }
dp BlockWriteDeMux (
in writeIn : ns( 8 );
out writeOut1, writeOut2, writeOut3, writeOut4, writeOut5, writeOut6, writeOut7, writeOut8 : ns( 8 );
in row : ns( 3 )
) {
sfg run {
writeOut1 = row == 0 ? writeIn : 0;
writeOut2 = row == 1 ? writeIn : 0;
writeOut3 = row == 2 ? writeIn : 0;
writeOut4 = row == 3 ? writeIn : 0;
writeOut5 = row == 4 ? writeIn : 0;
writeOut6 = row == 5 ? writeIn : 0;
writeOut7 = row == 6 ? writeIn : 0;
writeOut8 = row == 7 ? writeIn : 0;
}
}
hardwired BlockWriteDeMux_Ctrl( BlockWriteDeMux ) { run; }
dp BlockMux (
in dataIn1, dataIn2, dataIn3, dataIn4, dataIn5, dataIn6, dataIn7, dataIn8 : tc( 256 );
out dataOut : tc( 256 );
in row : ns( 3 )
) {
sfg run {
dataOut = (
row == 0 ? dataIn1 : (
row == 1 ? dataIn2 : (
row == 2 ? dataIn3 : (
row == 3 ? dataIn4 : (
row == 4 ? dataIn5 : (
row == 5 ? dataIn6 : (
row == 6 ? dataIn7 : (
dataIn8 ) ) ) ) ) ) ) );
}
}
hardwired BlockMux_Ctrl( BlockMux ) { run; }
dp Block (
in dataIn : tc( 256 );
out dataOut : tc( 256 );
in write : ns( 8 );
in row : ns( 3 )
) {
sig dataIn1, dataIn2, dataIn3, dataIn4, dataIn5, dataIn6, dataIn7, dataIn8 : tc( 256 );
sig dataOut1, dataOut2, dataOut3, dataOut4, dataOut5, dataOut6, dataOut7, dataOut8 : tc( 256 );
sig writeOut1, writeOut2, writeOut3, writeOut4, writeOut5, writeOut6, writeOut7, writeOut8 : ns( 8 );
use BlockDeMux( dataIn, dataOut1, dataOut2, dataOut3, dataOut4, dataOut5, dataOut6, dataOut7, dataOut8, row );
use BlockWriteDeMux( write, writeOut1, writeOut2, writeOut3, writeOut4, writeOut5, writeOut6, writeOut7, writeOut8, row );
use BlockMux( dataIn1, dataIn2, dataIn3, dataIn4, dataIn5, dataIn6, dataIn7, dataIn8, dataOut, row );
use BlockRow1( dataIn1, dataOut1, write1 );
use BlockRow2( dataIn2, dataOut2, write2 );
use BlockRow3( dataIn3, dataOut3, write3 );
use BlockRow4( dataIn4, dataOut4, write4 );
use BlockRow1( dataIn5, dataOut5, write5 );
use BlockRow1( dataIn6, dataOut6, write6 );
use BlockRow1( dataIn7, dataOut7, write7 );
use BlockRow1( dataIn8, dataOut8, write8 );
sfg run {
}
}
hardwired Block_Ctrl( Block ) { run; }
dp BlockTest (
in dataIn : tc( 256 );
out dataOut : tc (256 );
out write : ns( 8 );
out row : ns ( 3 )
) {
sfg test1 {
dataOut = (1 & 0xFFFFFFFF) # (2 & 0xFFFFFFFF) # (3 & 0xFFFFFFFF) # (4 & 0xFFFFFFFF) # (5 & 0xFFFFFFFF) # (6 & 0xFFFFFFFF) # (7 & 0xFFFFFFFF) # (8 & 0xFFFFFFFF);
write = 0b11111111;
row = 1;
}
sfg test2 {
dataOut = (1 & 0xFFFFFFFF) # (2 & 0xFFFFFFFF) # (3 & 0xFFFFFFFF) # (4 & 0xFFFFFFFF) # (5 & 0xFFFFFFFF) # (6 & 0xFFFFFFFF) # (7 & 0xFFFFFFFF) # (8 & 0xFFFFFFFF);
write = 0b11111111;
row = 5;
}
sfg test3 {
dataOut = (1337 & 0xFFFFFFFF) # (1337 & 0xFFFFFFFF) # (1337 & 0xFFFFFFFF) # (1337 & 0xFFFFFFFF) # (1337 & 0xFFFFFFFF) # (1337 & 0xFFFFFFFF) # (1337 & 0xFFFFFFFF) # (1337 & 0xFFFFFFFF);
write = 0b10011001;
row = 5;
}
sfg test4 {
dataOut = (5 & 0xFFFFFFFF) # (6 & 0xFFFFFFFF) # (7 & 0xFFFFFFFF) # (8 & 0xFFFFFFFF) # (9 & 0xFFFFFFFF) # (10 & 0xFFFFFFFF) # (11 & 0xFFFFFFFF) # (12 & 0xFFFFFFFF);
write = 0b01010101;
row = 8;
}
sfg read1 {
dataOut = (10 & 0xFFFFFFFF) # (20 & 0xFFFFFFFF) # (30 & 0xFFFFFFFF) # (40 & 0xFFFFFFFF) # (50 & 0xFFFFFFFF) # (60& 0xFFFFFFFF) # (70 & 0xFFFFFFFF) # (80 & 0xFFFFFFFF);
write = 0b00000000;
row = 1;
$display($cycle,$dec, dataOut[255:224], dataOut[223:192], dataOut[191:160], dataOut[159:128], dataOut[127:96], dataOut[95:64]);, dataOut[63:32], dataOut[31:0]);
}
sfg read2 {
dataOut = (10 & 0xFFFFFFFF) # (20 & 0xFFFFFFFF) # (30 & 0xFFFFFFFF) # (40 & 0xFFFFFFFF) # (50 & 0xFFFFFFFF) # (60& 0xFFFFFFFF) # (70 & 0xFFFFFFFF) # (80 & 0xFFFFFFFF);
write = 0b00000000;
row = 2;
$display($cycle,$dec, dataOut[255:224], dataOut[223:192], dataOut[191:160], dataOut[159:128], dataOut[127:96], dataOut[95:64]);, dataOut[63:32], dataOut[31:0]);
}
sfg read3 {
dataOut = (10 & 0xFFFFFFFF) # (20 & 0xFFFFFFFF) # (30 & 0xFFFFFFFF) # (40 & 0xFFFFFFFF) # (50 & 0xFFFFFFFF) # (60& 0xFFFFFFFF) # (70 & 0xFFFFFFFF) # (80 & 0xFFFFFFFF);
write = 0b00000000;
row = 3;
$display($cycle,$dec, dataOut[255:224], dataOut[223:192], dataOut[191:160], dataOut[159:128], dataOut[127:96], dataOut[95:64]);, dataOut[63:32], dataOut[31:0]);
}
sfg read4 {
dataOut = (10 & 0xFFFFFFFF) # (20 & 0xFFFFFFFF) # (30 & 0xFFFFFFFF) # (40 & 0xFFFFFFFF) # (50 & 0xFFFFFFFF) # (60& 0xFFFFFFFF) # (70 & 0xFFFFFFFF) # (80 & 0xFFFFFFFF);
write = 0b00000000;
row = 4;
$display($cycle,$dec, dataOut[255:224], dataOut[223:192], dataOut[191:160], dataOut[159:128], dataOut[127:96], dataOut[95:64]);, dataOut[63:32], dataOut[31:0]);
}
sfg read5 {
dataOut = (10 & 0xFFFFFFFF) # (20 & 0xFFFFFFFF) # (30 & 0xFFFFFFFF) # (40 & 0xFFFFFFFF) # (50 & 0xFFFFFFFF) # (60& 0xFFFFFFFF) # (70 & 0xFFFFFFFF) # (80 & 0xFFFFFFFF);
write = 0b00000000;
row = 5;
$display($cycle,$dec, dataOut[255:224], dataOut[223:192], dataOut[191:160], dataOut[159:128], dataOut[127:96], dataOut[95:64]);, dataOut[63:32], dataOut[31:0]);
}
sfg read6 {
dataOut = (10 & 0xFFFFFFFF) # (20 & 0xFFFFFFFF) # (30 & 0xFFFFFFFF) # (40 & 0xFFFFFFFF) # (50 & 0xFFFFFFFF) # (60& 0xFFFFFFFF) # (70 & 0xFFFFFFFF) # (80 & 0xFFFFFFFF);
write = 0b00000000;
row = 6;
$display($cycle,$dec, dataOut[255:224], dataOut[223:192], dataOut[191:160], dataOut[159:128], dataOut[127:96], dataOut[95:64]);, dataOut[63:32], dataOut[31:0]);
}
sfg read7 {
dataOut = (10 & 0xFFFFFFFF) # (20 & 0xFFFFFFFF) # (30 & 0xFFFFFFFF) # (40 & 0xFFFFFFFF) # (50 & 0xFFFFFFFF) # (60& 0xFFFFFFFF) # (70 & 0xFFFFFFFF) # (80 & 0xFFFFFFFF);
write = 0b00000000;
row = 7;
$display($cycle,$dec, dataOut[255:224], dataOut[223:192], dataOut[191:160], dataOut[159:128], dataOut[127:96], dataOut[95:64]);, dataOut[63:32], dataOut[31:0]);
}
sfg read8 {
dataOut = (10 & 0xFFFFFFFF) # (20 & 0xFFFFFFFF) # (30 & 0xFFFFFFFF) # (40 & 0xFFFFFFFF) # (50 & 0xFFFFFFFF) # (60& 0xFFFFFFFF) # (70 & 0xFFFFFFFF) # (80 & 0xFFFFFFFF);
write = 0b00000000;
row = 8;
$display($cycle,$dec, dataOut[255:224], dataOut[223:192], dataOut[191:160], dataOut[159:128], dataOut[127:96], dataOut[95:64]);, dataOut[63:32], dataOut[31:0]);
}
}
sequencer BlocTest_Ctrl( BlockTest ) { test1; }
dp main {
sig dataIn, dataOut : tc( 256 );
sig write : ns( 8 );
sig row : ns( 3 );
use Block( dataIn, dataOut, write, row );
use BlockTest( dataOut, dataIn, write, row );
sfg run {
}
}
hardwired main_Ctrl( main ) { run; }
system S {
main;
}