packages feed

clash-systemverilog 0.5.6 → 0.5.7

raw patch · 6 files changed

+47/−30 lines, 6 filesdep ~clash-libPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: clash-lib

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -1,5 +1,11 @@ # Changelog for the [`clash-systemverilog`](http://hackage.haskell.org/package/clash-systemverilog) package +## 0.5.7 *June 26th 2015*+* Fixes bug:+  * Incorrect primitive for `CLaSH.Prelude.Testbench.assert'`+  * Incorrect primitive for `CLaSH.Sized.Vec.index_int`+  * Sometimes created incorrect nested `generate` statements+ ## 0.5.6 *June 25th 2015* * New features:   * Support `clash-prelude-0.9`
clash-systemverilog.cabal view
@@ -1,5 +1,5 @@ Name:                 clash-systemverilog-Version:              0.5.6+Version:              0.5.7 Synopsis:             CAES Language for Synchronous Hardware - SystemVerilog backend Description:   CλaSH (pronounced ‘clash’) is a functional hardware description language that@@ -70,7 +70,7 @@   CPP-Options:        -DCABAL    Build-depends:      base                    >= 4.6.0.1 && < 5,-                      clash-lib               >= 0.5.7,+                      clash-lib               >= 0.5.8,                       clash-prelude           >= 0.9,                       fgl                     >= 5.4.2.4,                       lens                    >= 3.9.2,
primitives/CLaSH.Prelude.Testbench.json view
@@ -1,5 +1,5 @@ [ { "BlackBox" :-    { "name" : "CLaSH.Prelude.Testbench.assert"+    { "name" : "CLaSH.Prelude.Testbench.assert'"     , "type" : "assert :: (Eq a,Show a) -- (ARG[0],ARG[1])         => SClock t      -- ^ ARG[2]@@ -13,7 +13,7 @@ // pragma translate_off always @(posedge ~CLK[2] or posedge ~RST[2]) begin   if (~ARG[4] != ~ARG[5]) begin-    $display(\"%s, expected: %b, actual: %b\", ~LIT[3], ~TYPM[3]_to_lv(~ARG[5]), ~TYPM[2]_to_lv(~ARG[4]));+    $display(\"%s, expected: %b, actual: %b\", ~LIT[3], ~TYPM[5]_to_lv(~ARG[5]), ~TYPM[4]_to_lv(~ARG[4]));     $stop;   end end
primitives/CLaSH.Sized.Internal.Signed.json view
@@ -242,7 +242,7 @@     , "comment"   : "Back-end should only use this code when the result is smaller than the argument"     , "templateD" : "// resize begin-generate+~GENERATE   if (~LIT[1] < ~LIT[0]) begin     // truncate, sign preserving     ~SIGD[~SYM[0]][2];@@ -252,7 +252,7 @@     // sign-extend     assign ~RESULT = $signed(~ARG[2]);   end-endgenerate+~ENDGENERATE // resize end"     }   }
primitives/CLaSH.Sized.Vector.json view
@@ -73,11 +73,11 @@ assign ~SYM[0] = ~ARG[4];  genvar ~SYM[1];-generate+~GENERATE   for (~SYM[1]=0; ~SYM[1] < ~LIT[3]; ~SYM[1] = ~SYM[1] + 1) begin : select_~SYM[2]     assign ~RESULT[~SYM[1]] = ~SYM[0][~LIT[1] + (~LIT[2] * ~SYM[1])];   end-endgenerate+~ENDGENERATE // select end"     }   }@@ -93,7 +93,7 @@ assign ~SYM[1] = ~ARG[1];  genvar ~SYM[2];-generate+~GENERATE   for (~SYM[2]=0; ~SYM[2] < $size(~RESULT); ~SYM[2] = ~SYM[2] + 1) begin : append_~SYM[3]     if (~SYM[2] < $size(~SYM[0])) begin       assign ~RESULT[~SYM[2]] = ~SYM[0][~SYM[2]];@@ -101,7 +101,7 @@       assign ~RESULT[~SYM[2]] = ~SYM[1][~SYM[2]-$size(~SYM[0])];     end   end-endgenerate+~ENDGENERATE // (++) end"     }   }@@ -114,11 +114,11 @@ assign ~SYM[0] = ~ARG[0];  genvar ~SYM[1];-generate+~GENERATE   for (~SYM[1]=0; ~SYM[1] < $size(~SYM[0]); ~SYM[1] = ~SYM[1] + 1) begin : concat_~SYM[2]     assign ~RESULT[(~SYM[5] * $size(~SYM[0][0])) : ((~SYM[5] * $size(~SYM[0][0])) + $high(~SYM[0][0]))] = ~SYM[0][~SYM[1]];   end-endgenerate+~ENDGENERATE // concat end"     }   }@@ -149,11 +149,11 @@ assign ~SYM[0] = ~ARG[2];  genvar ~SYM[1];-generate+~GENERATE   for (~SYM[1] = 0; ~SYM[1] < $size(~RESULT); ~SYM[1] = ~SYM[1] + 1) begin : unconcat_~SYM[2]     assign ~RESULT[~SYM[1]] = ~SYM[0][(~SYM[1] * ~LIT[1]) : ((~SYM[1] * ~LIT[1]) + ~LIT[1] - 1)];   end-endgenerate+~ENDGENERATE // unconcat end"     }   }@@ -168,12 +168,12 @@ assign ~SYM[1] = ~ARG[1];  genvar ~SYM[2];-generate+~GENERATE   for (~SYM[2] = 0; ~SYM[2] < $size(~SYM[0]); ~SYM[2] = ~SYM[2] + 1) begin : merge_~SYM[3]     assign ~RESULT[2*~SYM[2]]   = ~SYM[0][~SYM[2]];     assign ~RESULT[2*~SYM[2]+1] = ~SYM[1][~SYM[2]];   end-endgenerate+~ENDGENERATE // merge end"     }   }@@ -186,14 +186,14 @@ assign ~SYM[0] = ~ARG[1];  genvar ~SYM[1];-generate+~GENERATE   for (~SYM[1]=0; ~SYM[1] < $size(~RESULT); ~SYM[1] = ~SYM[1] + 1) begin : map_~SYM[2]     ~INST 0       ~OUTPUT <= ~RESULT[~SYM[1]]~ ~TYPEL[~TYPO]~       ~INPUT  <= ~SYM[0][~SYM[1]]~ ~TYPEL[~TYP[1]]~     ~INST   end-endgenerate+~ENDGENERATE // map end"     }   }@@ -208,7 +208,7 @@ assign ~SYM[1] = ~ARG[2];  genvar ~SYM[2];-generate+~GENERATE   for (~SYM[2] = 0; ~SYM[2] < $size(~RESULT); ~SYM[2] = ~SYM[2] + 1) begin : zipWith_~SYM[2]     ~INST 0       ~OUTPUT <= ~RESULT[~SYM[2]]~ ~TYPEL[~TYPO]~@@ -216,7 +216,7 @@       ~INPUT  <= ~SYM[1][~SYM[2]]~ ~TYPEL[~TYP[2]]~     ~INST   end-endgenerate+~ENDGENERATE // zipWith end"     }   }@@ -226,7 +226,7 @@     , "templateD" : "// indexVec begin ~SIGD[vec_~SYM[0]][1];-assign vec_SYM[0] = ~ARG[1];+assign vec_~SYM[0] = ~ARG[1];  assign ~RESULT = vec_~SYM[0][~ARG[2]]; // indexVec end"@@ -277,11 +277,11 @@ assign ~SYM[0] = ~ARG[0];  genvar ~SYM[1];-generate+~GENERATE   for (~SYM[1] = 0; ~SYM[1] < $size(~SYM[0]); ~SYM[1] = ~SYM[1] + 1) begin : reverse_~SYM[2]     assign ~RESULT[$high(~SYM[0]) - ~SYM[1]] = ~SYM[0][~SYM[1]];   end-endgenerate+~ENDGENERATE // reverse end"     }   }@@ -303,11 +303,11 @@ assign ~SYM[0] = ~ARG[1];  genvar ~SYM[1];-generate+~GENERATE   for (~SYM[1] = 0; ~SYM[1] < $size(~SYM[0]); ~SYM[1] = ~SYM[1] + 1) begin : concatBitVector_~SYM[2]     assign ~RESULT[((~SYM[1] * ~LIT[0]) + ~LIT[0] - 1) : (~SYM[1] * ~LIT[0])] = ~SYM[0][$high(~SYM[0]) - ~SYM[1]];   end-endgenerate+~ENDGENERATE // concatBitVector end"     }   }@@ -323,11 +323,11 @@ assign ~SYM[0] = ~ARG[2];  genvar ~SYM[1];-generate+~GENERATE   for (~SYM[1] = 0; ~SYM[1] < $size(~RESULT); ~SYM[1] = ~SYM[1] + 1) begin : unconcatBitVector_~SYM[2]     assign ~RESULT[$high(~RESULT) - ~SYM[1]] = ~SYM[0][((~SYM[1] * ~LIT[1]) + ~LIT[1] - 1) : (~SYM[1] * ~LIT[1])];   end-endgenerate+~ENDGENERATE // unconcatBitVector end"     }   }
src/CLaSH/Backend/SystemVerilog.hs view
@@ -41,12 +41,13 @@     { _tyCache   :: HashSet HWType -- ^ Previously encountered  HWTypes     , _tyCount   :: Int -- ^ Product type counter     , _nameCache :: HashMap HWType Doc -- ^ Cache for previously generated product type names+    , _genDepth  :: Int -- ^ Depth of current generative block     }  makeLenses ''SystemVerilogState  instance Backend SystemVerilogState where-  initBackend     = SystemVerilogState HashSet.empty 0 HashMap.empty+  initBackend     = SystemVerilogState HashSet.empty 0 HashMap.empty 0 #ifdef CABAL   primDir         = const (Paths_clash_systemverilog.getDataFileName "primitives") #else@@ -62,6 +63,16 @@   hdlTypeErrValue = verilogTypeErrValue   hdlTypeMark     = verilogTypeMark   hdlSig t ty     = sigDecl (text t) ty+  genStmt True    = do cnt <- use genDepth+                       genDepth += 1+                       if cnt > 0+                          then empty+                          else "generate"+  genStmt False   = do genDepth -= 1+                       cnt <- use genDepth+                       if cnt > 0+                          then empty+                          else "endgenerate"   inst            = inst_   expr            = expr_ @@ -72,7 +83,7 @@ genVerilog modName c = (unpack cName,) A.<$> verilog   where     cName   = componentName c-    verilog = "// Automatically generated SystemVerilog" <$$>+    verilog = "// Automatically generated SystemVerilog-2005" <$$>               tyImports modName <$$>               module_ c @@ -309,7 +320,7 @@     end      = start - argSize + 1  expr_ _ (Identifier id_ (Just (Indexed (ty@(Product _ _),_,fI)))) = text id_ <> dot <> verilogTypeMark ty <> "_sel" <> int fI-expr_ _ (Identifier id_ (Just (Indexed ((Vector _ _),_,fI)))) = text id_ <> parens (int fI)+expr_ _ (Identifier id_ (Just (Indexed ((Vector _ _),_,fI)))) = text id_ <> brackets (int fI) expr_ _ (Identifier id_ (Just (DC (ty@(SP _ _),_)))) = text id_ <> brackets (int start <> colon <> int end)   where     start = typeSize ty - 1