mirror of https://github.com/zachjs/sv2v.git
removed Unique dependency
- made stream conversion pure - type param conversion uses Set for instance uniqueness - updated NOTICE and resolutions
This commit is contained in:
parent
409f80ea83
commit
c262324a36
142
NOTICE
142
NOTICE
|
|
@ -34,41 +34,6 @@ Dependency: Cabal-2.4.1.0
|
|||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
================================================================================
|
||||
Dependency: Unique-0.4.7.6
|
||||
================================================================================
|
||||
|
||||
Copyright (c) 2014, Volodymyr Yaschenko
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
|
||||
* Neither the name of Volodymyr Yaschenko nor the names of other
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
================================================================================
|
||||
Dependency: alex-3.2.4
|
||||
================================================================================
|
||||
|
|
@ -350,43 +315,6 @@ Dependency: bytestring-0.10.8.2
|
|||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
================================================================================
|
||||
Dependency: clock-0.7.2
|
||||
================================================================================
|
||||
|
||||
Copyright (c) 2009-2012, Cetin Sert
|
||||
Copyright (c) 2010, Eugene Kirpichov
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
|
||||
* The names of contributors may not be used to endorse or promote
|
||||
products derived from this software without specific prior
|
||||
written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
================================================================================
|
||||
Dependency: cmdargs-0.10.20
|
||||
================================================================================
|
||||
|
|
@ -570,41 +498,6 @@ Dependency: directory-1.3.3.0
|
|||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
================================================================================
|
||||
Dependency: extra-1.6.14
|
||||
================================================================================
|
||||
|
||||
Copyright Neil Mitchell 2014-2018.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
|
||||
* Neither the name of Neil Mitchell nor the names of other
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
================================================================================
|
||||
Dependency: filepath-1.4.2.1
|
||||
================================================================================
|
||||
|
|
@ -1211,38 +1104,3 @@ Dependency: unix-2.7.2.2
|
|||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGE.
|
||||
|
||||
================================================================================
|
||||
Dependency: unordered-containers-0.2.9.0
|
||||
================================================================================
|
||||
|
||||
Copyright (c) 2010, Johan Tibell
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
|
||||
* Neither the name of Johan Tibell nor the names of other
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ module Convert.ParamType (convert) where
|
|||
|
||||
import Control.Monad.Writer
|
||||
import Data.Either (isLeft)
|
||||
import Data.List.Unique (complex)
|
||||
import Data.Maybe (isJust, isNothing, fromJust)
|
||||
import qualified Data.Map.Strict as Map
|
||||
import qualified Data.Set as Set
|
||||
|
|
@ -20,7 +19,7 @@ type MaybeTypeMap = Map.Map Identifier (Maybe Type)
|
|||
type Info = Map.Map Identifier ([Identifier], MaybeTypeMap)
|
||||
|
||||
type Instance = Map.Map Identifier Type
|
||||
type Instances = [(Identifier, Instance)]
|
||||
type Instances = Set.Set (Identifier, Instance)
|
||||
|
||||
type IdentSet = Set.Set Identifier
|
||||
type UsageMap = [(Identifier, Set.Set Identifier)]
|
||||
|
|
@ -33,8 +32,7 @@ convert files =
|
|||
mapM (collectDescriptionsM collectDescriptionM) files
|
||||
(files', instancesRaw) = runWriter $ mapM
|
||||
(mapM $ traverseModuleItemsM $ convertModuleItemM info) files
|
||||
instances = uniq instancesRaw
|
||||
uniq l = l' where (l', _, _) = complex l
|
||||
instances = Set.toList instancesRaw
|
||||
|
||||
-- add type parameter instantiations
|
||||
files'' = map (concatMap explodeDescription) files'
|
||||
|
|
@ -241,7 +239,7 @@ convertModuleItemM info (orig @ (Instance m bindings x r p)) =
|
|||
then return $ Instance m bindingsNamed x r p
|
||||
else return $ Instance (moduleDefaultName m) bindingsDefaulted x r p
|
||||
else do
|
||||
tell [(m, resolvedTypes)]
|
||||
tell $ Set.singleton (m, resolvedTypes)
|
||||
let m' = moduleInstanceName m resolvedTypes
|
||||
return $ Instance m' bindings' x r p
|
||||
where
|
||||
|
|
|
|||
|
|
@ -6,25 +6,15 @@
|
|||
|
||||
module Convert.Stream (convert) where
|
||||
|
||||
import Control.Monad.Writer
|
||||
import Data.List.Unique (complex)
|
||||
|
||||
import Convert.Traverse
|
||||
import Language.SystemVerilog.AST
|
||||
|
||||
type Funcs = [ModuleItem]
|
||||
|
||||
convert :: [AST] -> [AST]
|
||||
convert = map $ traverseDescriptions convertDescription
|
||||
|
||||
convertDescription :: Description -> Description
|
||||
convertDescription (description @ Part{}) =
|
||||
Part attrs extern kw lifetime name ports (items ++ funcs)
|
||||
where
|
||||
(description', funcSet) =
|
||||
runWriter $ traverseModuleItemsM (traverseStmtsM traverseStmtM) description
|
||||
Part attrs extern kw lifetime name ports items = description'
|
||||
(funcs, _, _) = complex funcSet
|
||||
traverseModuleItems (traverseStmts traverseStmt) description
|
||||
convertDescription other = other
|
||||
|
||||
streamerBlock :: Expr -> Expr -> (LHS -> Expr -> Stmt) -> LHS -> Expr -> Stmt
|
||||
|
|
@ -67,32 +57,32 @@ streamerBlockName :: Expr -> Expr -> Identifier
|
|||
streamerBlockName chunk size =
|
||||
"_sv2v_strm_" ++ shortHash (chunk, size)
|
||||
|
||||
traverseStmtM :: Stmt -> Writer Funcs Stmt
|
||||
traverseStmtM (Asgn op mt lhs expr) =
|
||||
traverseAsgnM (lhs, expr) (Asgn op mt)
|
||||
traverseStmtM other = return other
|
||||
traverseStmt :: Stmt -> Stmt
|
||||
traverseStmt (Asgn op mt lhs expr) =
|
||||
traverseAsgn (lhs, expr) (Asgn op mt)
|
||||
traverseStmt other = other
|
||||
|
||||
traverseAsgnM :: (LHS, Expr) -> (LHS -> Expr -> Stmt) -> Writer Funcs Stmt
|
||||
traverseAsgnM (lhs, Stream StreamR _ exprs) constructor =
|
||||
return $ constructor lhs expr
|
||||
traverseAsgn :: (LHS, Expr) -> (LHS -> Expr -> Stmt) -> Stmt
|
||||
traverseAsgn (lhs, Stream StreamR _ exprs) constructor =
|
||||
constructor lhs expr
|
||||
where
|
||||
expr = Concat $ exprs ++ [Repeat delta [Number "1'b0"]]
|
||||
size = DimsFn FnBits $ Right $ lhsToExpr lhs
|
||||
exprSize = DimsFn FnBits $ Right (Concat exprs)
|
||||
delta = BinOp Sub size exprSize
|
||||
traverseAsgnM (LHSStream StreamR _ lhss, expr) constructor =
|
||||
return $ constructor (LHSConcat lhss) expr
|
||||
traverseAsgnM (lhs, Stream StreamL chunk exprs) constructor = do
|
||||
return $ streamerBlock chunk size constructor lhs expr
|
||||
traverseAsgn (LHSStream StreamR _ lhss, expr) constructor =
|
||||
constructor (LHSConcat lhss) expr
|
||||
traverseAsgn (lhs, Stream StreamL chunk exprs) constructor = do
|
||||
streamerBlock chunk size constructor lhs expr
|
||||
where
|
||||
expr = Concat $ Repeat delta [Number "1'b0"] : exprs
|
||||
size = DimsFn FnBits $ Right $ lhsToExpr lhs
|
||||
exprSize = DimsFn FnBits $ Right (Concat exprs)
|
||||
delta = BinOp Sub size exprSize
|
||||
traverseAsgnM (LHSStream StreamL chunk lhss, expr) constructor = do
|
||||
return $ streamerBlock chunk size constructor lhs expr
|
||||
traverseAsgn (LHSStream StreamL chunk lhss, expr) constructor = do
|
||||
streamerBlock chunk size constructor lhs expr
|
||||
where
|
||||
lhs = LHSConcat lhss
|
||||
size = DimsFn FnBits $ Right expr
|
||||
traverseAsgnM (lhs, expr) constructor =
|
||||
return $ constructor lhs expr
|
||||
traverseAsgn (lhs, expr) constructor =
|
||||
constructor lhs expr
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
resolver: lts-13.17
|
||||
|
||||
extra-deps:
|
||||
- Unique-0.4.7.6
|
||||
|
||||
packages:
|
||||
- .
|
||||
|
|
|
|||
|
|
@ -3,14 +3,7 @@
|
|||
# For more information, please see the documentation at:
|
||||
# https://docs.haskellstack.org/en/stable/lock_files
|
||||
|
||||
packages:
|
||||
- completed:
|
||||
hackage: Unique-0.4.7.6@sha256:a1ff411f4d68c756e01e8d532fbe8e57f1ac77f2cc0ee8a999770be2bca185c5,2723
|
||||
pantry-tree:
|
||||
size: 1366
|
||||
sha256: 587d279ff94e8d6f43da3710634ca3611fa4f6886b1e541a73c69303c00297b9
|
||||
original:
|
||||
hackage: Unique-0.4.7.6
|
||||
packages: []
|
||||
snapshots:
|
||||
- completed:
|
||||
size: 497508
|
||||
|
|
|
|||
|
|
@ -32,8 +32,7 @@ executable sv2v
|
|||
filepath,
|
||||
githash,
|
||||
hashable,
|
||||
mtl,
|
||||
Unique
|
||||
mtl
|
||||
other-modules:
|
||||
-- SystemVerilog modules
|
||||
Language.SystemVerilog
|
||||
|
|
|
|||
Loading…
Reference in New Issue