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) {
 | 
							if (dff) {
 | 
				
			||||||
			ffAD = dff;
 | 
								ffAD = dff;
 | 
				
			||||||
			clock = dffclock;
 | 
								clock = dffclock;
 | 
				
			||||||
 | 
								if (dffrstmux) {
 | 
				
			||||||
 | 
									ffADrstmux = dffrstmux;
 | 
				
			||||||
 | 
									ffADrstpol = dffrstpol;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if (dffcemux) {
 | 
								if (dffcemux) {
 | 
				
			||||||
				ffADcemux = dffcemux;
 | 
									ffADcemux = dffcemux;
 | 
				
			||||||
				ffADrstmux = dffrstmux;
 | 
					 | 
				
			||||||
				ffADcepol = dffcepol;
 | 
									ffADcepol = dffcepol;
 | 
				
			||||||
				ffADrstpol = dffrstpol;
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			sigA = dffD;
 | 
								sigA = dffD;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -115,12 +117,12 @@ code argQ ffAD ffADcemux ffADrstmux ffADcepol ffADrstpol sigA clock ffA2 ffA2cem
 | 
				
			||||||
				ffA2 = dff;
 | 
									ffA2 = dff;
 | 
				
			||||||
				clock = dffclock;
 | 
									clock = dffclock;
 | 
				
			||||||
				if (dffrstmux) {
 | 
									if (dffrstmux) {
 | 
				
			||||||
					ffA2cepol = dffcepol;
 | 
										ffA2rstmux = dffrstmux;
 | 
				
			||||||
					ffArstpol = dffrstpol;
 | 
										ffArstpol = dffrstpol;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				if (dffcemux) {
 | 
									if (dffcemux) {
 | 
				
			||||||
 | 
										ffA2cepol = dffcepol;
 | 
				
			||||||
					ffA2cemux = dffcemux;
 | 
										ffA2cemux = dffcemux;
 | 
				
			||||||
					ffA2rstmux = dffrstmux;
 | 
					 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				sigA = dffD;
 | 
									sigA = dffD;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -173,11 +175,13 @@ code argQ ffB2 ffB2cemux ffB2rstmux ffB2cepol ffBrstpol sigB clock ffB1 ffB1cemu
 | 
				
			||||||
		if (dff) {
 | 
							if (dff) {
 | 
				
			||||||
			ffB2 = dff;
 | 
								ffB2 = dff;
 | 
				
			||||||
			clock = dffclock;
 | 
								clock = dffclock;
 | 
				
			||||||
 | 
								if (dffrstmux) {
 | 
				
			||||||
 | 
									ffB2rstmux = dffrstmux;
 | 
				
			||||||
 | 
									ffBrstpol = dffrstpol;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if (dffcemux) {
 | 
								if (dffcemux) {
 | 
				
			||||||
				ffB2cemux = dffcemux;
 | 
									ffB2cemux = dffcemux;
 | 
				
			||||||
				ffB2rstmux = dffrstmux;
 | 
					 | 
				
			||||||
				ffB2cepol = dffcepol;
 | 
									ffB2cepol = dffcepol;
 | 
				
			||||||
				ffBrstpol = dffrstpol;
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			sigB = dffD;
 | 
								sigB = dffD;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -220,11 +224,13 @@ code argQ ffD ffDcemux ffDrstmux ffDcepol ffDrstpol sigD clock
 | 
				
			||||||
		if (dff) {
 | 
							if (dff) {
 | 
				
			||||||
			ffD = dff;
 | 
								ffD = dff;
 | 
				
			||||||
			clock = dffclock;
 | 
								clock = dffclock;
 | 
				
			||||||
 | 
								if (dffrstmux) {
 | 
				
			||||||
 | 
									ffDrstmux = dffrstmux;
 | 
				
			||||||
 | 
									ffDrstpol = dffrstpol;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if (dffcemux) {
 | 
								if (dffcemux) {
 | 
				
			||||||
				ffDcemux = dffcemux;
 | 
									ffDcemux = dffcemux;
 | 
				
			||||||
				ffDrstmux = dffrstmux;
 | 
					 | 
				
			||||||
				ffDcepol = dffcepol;
 | 
									ffDcepol = dffcepol;
 | 
				
			||||||
				ffDrstpol = dffrstpol;
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			sigD = dffD;
 | 
								sigD = dffD;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -238,11 +244,13 @@ code argD ffM ffMcemux ffMrstmux ffMcepol ffMrstpol sigM sigP clock
 | 
				
			||||||
		if (dff) {
 | 
							if (dff) {
 | 
				
			||||||
			ffM = dff;
 | 
								ffM = dff;
 | 
				
			||||||
			clock = dffclock;
 | 
								clock = dffclock;
 | 
				
			||||||
 | 
								if (dffrstmux) {
 | 
				
			||||||
 | 
									ffMrstmux = dffrstmux;
 | 
				
			||||||
 | 
									ffMrstpol = dffrstpol;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if (dffcemux) {
 | 
								if (dffcemux) {
 | 
				
			||||||
				ffMcemux = dffcemux;
 | 
									ffMcemux = dffcemux;
 | 
				
			||||||
				ffMrstmux = dffrstmux;
 | 
					 | 
				
			||||||
				ffMcepol = dffcepol;
 | 
									ffMcepol = dffcepol;
 | 
				
			||||||
				ffMrstpol = dffrstpol;
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			sigM = dffQ;
 | 
								sigM = dffQ;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -288,20 +296,22 @@ endcode
 | 
				
			||||||
 | 
					
 | 
				
			||||||
code argD ffP ffPcemux ffPrstmux ffPcepol ffPrstpol sigP clock
 | 
					code argD ffP ffPcemux ffPrstmux ffPcepol ffPrstpol sigP clock
 | 
				
			||||||
	if (param(dsp, \PREG).as_int() == 0) {
 | 
						if (param(dsp, \PREG).as_int() == 0) {
 | 
				
			||||||
		// If ffMcemux and no postAdd new-value net must have exactly three users: ffMcemux, ffM and ffPcemux
 | 
							int users = 2;
 | 
				
			||||||
		if ((ffMcemux && !postAdd && nusers(sigP) == 3) ||
 | 
							// If ffMcemux and no postAdd new-value net must have three users: ffMcemux, ffM and ffPcemux
 | 
				
			||||||
				// Otherwise new-value net must have exactly two users: dsp and ffPcemux
 | 
							if (ffMcemux && !postAdd) users++;
 | 
				
			||||||
				((!ffMcemux || postAdd) && nusers(sigP) == 2)) {
 | 
							if (nusers(sigP) == users) {
 | 
				
			||||||
			argD = sigP;
 | 
								argD = sigP;
 | 
				
			||||||
			subpattern(out_dffe);
 | 
								subpattern(out_dffe);
 | 
				
			||||||
			if (dff) {
 | 
								if (dff) {
 | 
				
			||||||
				ffP = dff;
 | 
									ffP = dff;
 | 
				
			||||||
				clock = dffclock;
 | 
									clock = dffclock;
 | 
				
			||||||
 | 
									if (dffrstmux) {
 | 
				
			||||||
 | 
										ffPrstmux = dffrstmux;
 | 
				
			||||||
 | 
										ffPrstpol = dffrstpol;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
				if (dffcemux) {
 | 
									if (dffcemux) {
 | 
				
			||||||
					ffPcemux = dffcemux;
 | 
										ffPcemux = dffcemux;
 | 
				
			||||||
					ffPcepol = dffcepol;
 | 
										ffPcepol = dffcepol;
 | 
				
			||||||
					ffPrstmux = dffrstmux;
 | 
					 | 
				
			||||||
					ffPrstpol = dffrstpol;
 | 
					 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				sigP = dffQ;
 | 
									sigP = dffQ;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -333,11 +343,13 @@ code argQ ffC ffCcemux ffCrstmux ffCcepol ffCrstpol sigC clock
 | 
				
			||||||
		if (dff) {
 | 
							if (dff) {
 | 
				
			||||||
			ffC = dff;
 | 
								ffC = dff;
 | 
				
			||||||
			clock = dffclock;
 | 
								clock = dffclock;
 | 
				
			||||||
 | 
								if (dffrstmux) {
 | 
				
			||||||
 | 
									ffCrstmux = dffrstmux;
 | 
				
			||||||
 | 
									ffCrstpol = dffrstpol;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if (dffcemux) {
 | 
								if (dffcemux) {
 | 
				
			||||||
				ffCcemux = dffcemux;
 | 
									ffCcemux = dffcemux;
 | 
				
			||||||
				ffCrstmux = dffrstmux;
 | 
					 | 
				
			||||||
				ffCcepol = dffcepol;
 | 
									ffCcepol = dffcepol;
 | 
				
			||||||
				ffCrstpol = dffrstpol;
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			sigC = dffD;
 | 
								sigC = dffD;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -421,7 +433,7 @@ code argD
 | 
				
			||||||
		argD = port(ffrstmux, ffrstpol ? \A : \B);
 | 
							argD = port(ffrstmux, ffrstpol ? \A : \B);
 | 
				
			||||||
		dffD.replace(port(ffrstmux, \Y), argD);
 | 
							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
 | 
							//   least 3 users (ff, <upstream>, ffrstmux) and
 | 
				
			||||||
		//   dffD only has two (ff, ffrstmux)
 | 
							//   dffD only has two (ff, ffrstmux)
 | 
				
			||||||
		if (!(nusers(argQ) >= 3 && nusers(dffD) == 2))
 | 
							if (!(nusers(argQ) >= 3 && nusers(dffD) == 2))
 | 
				
			||||||
| 
						 | 
					@ -525,7 +537,7 @@ endmatch
 | 
				
			||||||
code argD argQ
 | 
					code argD argQ
 | 
				
			||||||
	dffrstmux = ffrstmux;
 | 
						dffrstmux = ffrstmux;
 | 
				
			||||||
	if (ffrstmux) {
 | 
						if (ffrstmux) {
 | 
				
			||||||
		SigSpec AB = port(ffrstmux, ffcepol ? \A : \B);
 | 
							SigSpec AB = port(ffrstmux, ffrstpol ? \A : \B);
 | 
				
			||||||
		if (ffoffset + GetSize(argD) > GetSize(AB))
 | 
							if (ffoffset + GetSize(argD) > GetSize(AB))
 | 
				
			||||||
			reject;
 | 
								reject;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue