hdl.ast: make Value.__abs__ return unsigned shape.
				
					
				
			This commit is contained in:
		
							parent
							
								
									51391be1ae
								
							
						
					
					
						commit
						b1cce87630
					
				|  | @ -263,7 +263,7 @@ class Value(metaclass=ABCMeta): | ||||||
| 
 | 
 | ||||||
|     def __abs__(self): |     def __abs__(self): | ||||||
|         if self.shape().signed: |         if self.shape().signed: | ||||||
|             return Mux(self >= 0, self, -self) |             return Mux(self >= 0, self, -self)[:len(self)] | ||||||
|         else: |         else: | ||||||
|             return self |             return self | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -675,6 +675,17 @@ class OperatorTestCase(FHDLTestCase): | ||||||
|         with self.assertRaises(TypeError): |         with self.assertRaises(TypeError): | ||||||
|             hash(Const(0) + Const(0)) |             hash(Const(0) + Const(0)) | ||||||
| 
 | 
 | ||||||
|  |     def test_abs(self): | ||||||
|  |         s = Signal(4) | ||||||
|  |         self.assertRepr(abs(s), """ | ||||||
|  |         (sig s) | ||||||
|  |         """) | ||||||
|  |         s = Signal(signed(4)) | ||||||
|  |         self.assertRepr(abs(s), """ | ||||||
|  |         (slice (m (>= (sig s) (const 1'd0)) (sig s) (- (sig s))) 0:4) | ||||||
|  |         """) | ||||||
|  |         self.assertEqual(abs(s).shape(), unsigned(4)) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| class SliceTestCase(FHDLTestCase): | class SliceTestCase(FHDLTestCase): | ||||||
|     def test_shape(self): |     def test_shape(self): | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Marcelina Kościelnicka
						Marcelina Kościelnicka