mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-03 21:09:12 +00:00 
			
		
		
		
	Separate dffrstmux from dffcemux, fix typos
This commit is contained in:
		
							parent
							
								
									681be20ca2
								
							
						
					
					
						commit
						0932e23dff
					
				
					 1 changed files with 32 additions and 20 deletions
				
			
		| 
						 | 
				
			
			@ -63,11 +63,13 @@ code argQ ffAD ffADcemux ffADrstmux ffADcepol ffADrstpol sigA clock
 | 
			
		|||
		if (dff) {
 | 
			
		||||
			ffAD = dff;
 | 
			
		||||
			clock = dffclock;
 | 
			
		||||
			if (dffrstmux) {
 | 
			
		||||
				ffADrstmux = dffrstmux;
 | 
			
		||||
				ffADrstpol = dffrstpol;
 | 
			
		||||
			}
 | 
			
		||||
			if (dffcemux) {
 | 
			
		||||
				ffADcemux = dffcemux;
 | 
			
		||||
				ffADrstmux = dffrstmux;
 | 
			
		||||
				ffADcepol = dffcepol;
 | 
			
		||||
				ffADrstpol = dffrstpol;
 | 
			
		||||
			}
 | 
			
		||||
			sigA = dffD;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -115,12 +117,12 @@ code argQ ffAD ffADcemux ffADrstmux ffADcepol ffADrstpol sigA clock ffA2 ffA2cem
 | 
			
		|||
				ffA2 = dff;
 | 
			
		||||
				clock = dffclock;
 | 
			
		||||
				if (dffrstmux) {
 | 
			
		||||
					ffA2cepol = dffcepol;
 | 
			
		||||
					ffA2rstmux = dffrstmux;
 | 
			
		||||
					ffArstpol = dffrstpol;
 | 
			
		||||
				}
 | 
			
		||||
				if (dffcemux) {
 | 
			
		||||
					ffA2cepol = dffcepol;
 | 
			
		||||
					ffA2cemux = dffcemux;
 | 
			
		||||
					ffA2rstmux = dffrstmux;
 | 
			
		||||
				}
 | 
			
		||||
				sigA = dffD;
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			@ -173,11 +175,13 @@ code argQ ffB2 ffB2cemux ffB2rstmux ffB2cepol ffBrstpol sigB clock ffB1 ffB1cemu
 | 
			
		|||
		if (dff) {
 | 
			
		||||
			ffB2 = dff;
 | 
			
		||||
			clock = dffclock;
 | 
			
		||||
			if (dffrstmux) {
 | 
			
		||||
				ffB2rstmux = dffrstmux;
 | 
			
		||||
				ffBrstpol = dffrstpol;
 | 
			
		||||
			}
 | 
			
		||||
			if (dffcemux) {
 | 
			
		||||
				ffB2cemux = dffcemux;
 | 
			
		||||
				ffB2rstmux = dffrstmux;
 | 
			
		||||
				ffB2cepol = dffcepol;
 | 
			
		||||
				ffBrstpol = dffrstpol;
 | 
			
		||||
			}
 | 
			
		||||
			sigB = dffD;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -220,11 +224,13 @@ code argQ ffD ffDcemux ffDrstmux ffDcepol ffDrstpol sigD clock
 | 
			
		|||
		if (dff) {
 | 
			
		||||
			ffD = dff;
 | 
			
		||||
			clock = dffclock;
 | 
			
		||||
			if (dffrstmux) {
 | 
			
		||||
				ffDrstmux = dffrstmux;
 | 
			
		||||
				ffDrstpol = dffrstpol;
 | 
			
		||||
			}
 | 
			
		||||
			if (dffcemux) {
 | 
			
		||||
				ffDcemux = dffcemux;
 | 
			
		||||
				ffDrstmux = dffrstmux;
 | 
			
		||||
				ffDcepol = dffcepol;
 | 
			
		||||
				ffDrstpol = dffrstpol;
 | 
			
		||||
			}
 | 
			
		||||
			sigD = dffD;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -238,11 +244,13 @@ code argD ffM ffMcemux ffMrstmux ffMcepol ffMrstpol sigM sigP clock
 | 
			
		|||
		if (dff) {
 | 
			
		||||
			ffM = dff;
 | 
			
		||||
			clock = dffclock;
 | 
			
		||||
			if (dffrstmux) {
 | 
			
		||||
				ffMrstmux = dffrstmux;
 | 
			
		||||
				ffMrstpol = dffrstpol;
 | 
			
		||||
			}
 | 
			
		||||
			if (dffcemux) {
 | 
			
		||||
				ffMcemux = dffcemux;
 | 
			
		||||
				ffMrstmux = dffrstmux;
 | 
			
		||||
				ffMcepol = dffcepol;
 | 
			
		||||
				ffMrstpol = dffrstpol;
 | 
			
		||||
			}
 | 
			
		||||
			sigM = dffQ;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -288,20 +296,22 @@ endcode
 | 
			
		|||
 | 
			
		||||
code argD ffP ffPcemux ffPrstmux ffPcepol ffPrstpol sigP clock
 | 
			
		||||
	if (param(dsp, \PREG).as_int() == 0) {
 | 
			
		||||
		// If ffMcemux and no postAdd new-value net must have exactly three users: ffMcemux, ffM and ffPcemux
 | 
			
		||||
		if ((ffMcemux && !postAdd && nusers(sigP) == 3) ||
 | 
			
		||||
				// Otherwise new-value net must have exactly two users: dsp and ffPcemux
 | 
			
		||||
				((!ffMcemux || postAdd) && nusers(sigP) == 2)) {
 | 
			
		||||
		int users = 2;
 | 
			
		||||
		// If ffMcemux and no postAdd new-value net must have three users: ffMcemux, ffM and ffPcemux
 | 
			
		||||
		if (ffMcemux && !postAdd) users++;
 | 
			
		||||
		if (nusers(sigP) == users) {
 | 
			
		||||
			argD = sigP;
 | 
			
		||||
			subpattern(out_dffe);
 | 
			
		||||
			if (dff) {
 | 
			
		||||
				ffP = dff;
 | 
			
		||||
				clock = dffclock;
 | 
			
		||||
				if (dffrstmux) {
 | 
			
		||||
					ffPrstmux = dffrstmux;
 | 
			
		||||
					ffPrstpol = dffrstpol;
 | 
			
		||||
				}
 | 
			
		||||
				if (dffcemux) {
 | 
			
		||||
					ffPcemux = dffcemux;
 | 
			
		||||
					ffPcepol = dffcepol;
 | 
			
		||||
					ffPrstmux = dffrstmux;
 | 
			
		||||
					ffPrstpol = dffrstpol;
 | 
			
		||||
				}
 | 
			
		||||
				sigP = dffQ;
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			@ -333,11 +343,13 @@ code argQ ffC ffCcemux ffCrstmux ffCcepol ffCrstpol sigC clock
 | 
			
		|||
		if (dff) {
 | 
			
		||||
			ffC = dff;
 | 
			
		||||
			clock = dffclock;
 | 
			
		||||
			if (dffrstmux) {
 | 
			
		||||
				ffCrstmux = dffrstmux;
 | 
			
		||||
				ffCrstpol = dffrstpol;
 | 
			
		||||
			}
 | 
			
		||||
			if (dffcemux) {
 | 
			
		||||
				ffCcemux = dffcemux;
 | 
			
		||||
				ffCrstmux = dffrstmux;
 | 
			
		||||
				ffCcepol = dffcepol;
 | 
			
		||||
				ffCrstpol = dffrstpol;
 | 
			
		||||
			}
 | 
			
		||||
			sigC = dffD;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -421,7 +433,7 @@ code argD
 | 
			
		|||
		argD = port(ffrstmux, ffrstpol ? \A : \B);
 | 
			
		||||
		dffD.replace(port(ffrstmux, \Y), argD);
 | 
			
		||||
 | 
			
		||||
		// Only search for ffrstmux if argQ has at
 | 
			
		||||
		// Only search for ffcemux if argQ has at
 | 
			
		||||
		//   least 3 users (ff, <upstream>, ffrstmux) and
 | 
			
		||||
		//   dffD only has two (ff, ffrstmux)
 | 
			
		||||
		if (!(nusers(argQ) >= 3 && nusers(dffD) == 2))
 | 
			
		||||
| 
						 | 
				
			
			@ -525,7 +537,7 @@ endmatch
 | 
			
		|||
code argD argQ
 | 
			
		||||
	dffrstmux = ffrstmux;
 | 
			
		||||
	if (ffrstmux) {
 | 
			
		||||
		SigSpec AB = port(ffrstmux, ffcepol ? \A : \B);
 | 
			
		||||
		SigSpec AB = port(ffrstmux, ffrstpol ? \A : \B);
 | 
			
		||||
		if (ffoffset + GetSize(argD) > GetSize(AB))
 | 
			
		||||
			reject;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue