All pastes #261136 Raw Edit

Someone

public text v1 · immutable
#261136 ·published 2006-11-28 23:06 UTC
rendered paste body
dp 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;
}