Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
H
Hdlmake
Manage
Activity
Members
Labels
Plan
Issues
20
Issue boards
Milestones
Wiki
Code
Merge requests
5
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Projects
Hdlmake
Commits
617c46b6
Commit
617c46b6
authored
11 years ago
by
Paweł Szostek
Browse files
Options
Downloads
Patches
Plain Diff
rebuild user interface
parent
ee56d9bb
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/__main__.py
+84
-113
84 additions, 113 deletions
src/__main__.py
with
84 additions
and
113 deletions
src/__main__.py
+
84
−
113
View file @
617c46b6
...
...
@@ -5,14 +5,19 @@
# Author: Pawel Szostek (pawel.szostek@cern.ch)
# Modified to allow ISim simulation by Lucas Russo (lucas.russo@lnls.br)
from
__future__
import
print_function
import
os
import
global_mod
import
argparse
import
logging
import
sys
from
manifest_parser
import
ManifestParser
from
module_pool
import
ModulePool
from
env
import
Env
from
action
import
(
CleanModules
,
FetchModules
,
GenerateFetchMakefile
,
GenerateISEMakefile
,
GenerateISEProject
,
ListFiles
,
ListModules
,
MergeCores
,
GenerateQuartusProject
,
GenerateRemoteSynthesisMakefile
,
GenerateSimulationMakefile
)
try
:
from
build_hash
import
BUILD_ID
except
:
...
...
@@ -20,142 +25,108 @@ except:
def
main
():
usage
=
"
usage: prog [options]
\n
"
usage
+=
"
type prog --help to get help message
"
parser
=
argparse
.
ArgumentParser
(
usage
=
usage
)
parser
.
add_argument
(
"
--manifest-help
"
,
action
=
"
store_true
"
,
dest
=
"
manifest_help
"
,
help
=
"
print manifest file variables description
"
)
parser
.
add_argument
(
"
--check-env
"
,
action
=
"
store_true
"
,
dest
=
"
check_env
"
,
default
=
False
,
help
=
"
check environment for HDLMAKE-related settings
"
)
parser
.
add_argument
(
"
--make-sim
"
,
dest
=
"
make_sim
"
,
action
=
"
store_true
"
,
default
=
None
,
help
=
"
generate a simulation Makefile
"
)
parser
.
add_argument
(
"
--make-fetch
"
,
dest
=
"
make_fetch
"
,
action
=
"
store_true
"
,
default
=
None
,
help
=
"
generate a makefile for modules
'
fetching
"
)
parser
.
add_argument
(
"
--make-ise
"
,
dest
=
"
make_ise
"
,
action
=
"
store_true
"
,
default
=
None
,
help
=
"
generate a makefile for local ISE synthesis
"
)
parser
.
add_argument
(
"
--make-remote
"
,
dest
=
"
make_remote
"
,
action
=
"
store_true
"
,
default
=
None
,
help
=
"
generate a makefile for remote synthesis
"
)
parser
.
add_argument
(
"
-f
"
,
"
--fetch
"
,
action
=
"
store_true
"
,
dest
=
"
fetch
"
,
default
=
None
,
help
=
"
fetch and/or update remote modules listed in Manifest
"
)
parser
.
add_argument
(
"
--clean
"
,
action
=
"
store_true
"
,
dest
=
"
clean
"
,
default
=
None
,
help
=
"
remove all modules fetched for this one
"
)
parser
.
add_argument
(
"
--list
"
,
action
=
"
store_true
"
,
dest
=
"
list
"
,
default
=
None
,
help
=
"
List all modules together with their files
"
)
parser
.
add_argument
(
"
--list-files
"
,
action
=
"
store_true
"
,
dest
=
"
list_files
"
,
default
=
None
,
help
=
"
List all files in a from of a space-separated string
"
)
parser
.
add_argument
(
"
--merge-cores=name
"
,
default
=
None
,
dest
=
"
merge_cores
"
,
help
=
"
Merges entire synthesizable content of an project into a pair of VHDL/Verilog files
"
)
parser
.
add_argument
(
"
--ise-proj
"
,
action
=
"
store_true
"
,
dest
=
"
ise_proj
"
,
default
=
None
,
help
=
"
create/update an ise project including list of project
"
"
files
"
)
parser
.
add_argument
(
"
--quartus-proj
"
,
action
=
"
store_true
"
,
dest
=
"
quartus_proj
"
,
default
=
None
,
help
=
"
create/update a quartus project including list of project
"
"
files
"
)
parser
=
argparse
.
ArgumentParser
(
"
hdlmake
"
)
subparsers
=
parser
.
add_subparsers
(
title
=
"
commands
"
,
dest
=
"
command
"
)
check_env
=
subparsers
.
add_parser
(
"
check-env
"
,
help
=
"
check environment for HDLMAKE-related settings
"
)
manifest_help
=
subparsers
.
add_parser
(
"
manifest-help
"
,
help
=
"
print manifest file variables description
"
)
make_sim
=
subparsers
.
add_parser
(
"
make-sim
"
,
help
=
"
generate a simulation Makefile
"
)
make_sim
.
add_argument
(
"
--append
"
,
help
=
"
append generated makefile to the existing one
"
,
default
=
False
,
action
=
"
store_true
"
)
make_fetch
=
subparsers
.
add_parser
(
"
make-fetch
"
,
help
=
"
generate a makefile for modules
'
fetching
"
)
make_fetch
.
add_argument
(
"
--append
"
,
help
=
"
append generated makefile to the existing one
"
,
default
=
False
,
action
=
"
store_true
"
)
make_ise
=
subparsers
.
add_parser
(
"
make-ise
"
,
help
=
"
generate a makefile for local ISE synthesis
"
)
make_ise
.
add_argument
(
"
--append
"
,
help
=
"
append generated makefile to the existing one
"
,
default
=
False
,
action
=
"
store_true
"
)
make_remote
=
subparsers
.
add_parser
(
"
make-remote
"
,
help
=
"
generate a makefile for remote synthesis
"
)
make_remote
.
add_argument
(
"
--append
"
,
help
=
"
append generated makefile to the existing one
"
,
default
=
False
,
action
=
"
store_true
"
)
fetch
=
subparsers
.
add_parser
(
"
fetch
"
,
help
=
"
fetch and/or update remote modules listed in Manifest
"
)
clean
=
subparsers
.
add_parser
(
"
clean
"
,
help
=
"
remove all modules fetched for this one
"
)
listmod
=
subparsers
.
add_parser
(
"
list-mods
"
,
help
=
"
List all modules together with their files
"
)
listfiles
=
subparsers
.
add_parser
(
"
list-files
"
,
help
=
"
List all files in a form of a space-separated string
"
)
listfiles
.
add_argument
(
"
--delimiter
"
,
help
=
"
set delimitier for the list of files
"
,
dest
=
"
delimiter
"
,
default
=
'
'
)
merge_cores
=
subparsers
.
add_parser
(
"
merge-cores
"
,
help
=
"
Merges entire synthesizable content of an project into a pair of VHDL/Verilog files
"
)
merge_cores
.
add_argument
(
"
--dest
"
,
help
=
"
name for output merged file
"
,
dest
=
"
dest
"
,
default
=
None
)
ise_proj
=
subparsers
.
add_parser
(
"
ise-proj
"
,
help
=
"
create/update an ise project including list of project
"
)
quartus_proj
=
subparsers
.
add_parser
(
"
quartus-proj
"
,
help
=
"
create/update a quartus project including list of project
"
)
version
=
subparsers
.
add_parser
(
"
version
"
,
help
=
"
print version id of this Hdlmake build
"
)
parser
.
add_argument
(
"
--py
"
,
dest
=
"
arbitrary_code
"
,
default
=
""
,
help
=
"
add arbitrary code to all manifests
'
evaluation
"
)
default
=
""
,
help
=
"
add arbitrary code to all manifests
'
evaluation
"
)
parser
.
add_argument
(
"
--log
"
,
dest
=
"
log
"
,
default
=
"
info
"
,
help
=
"
set logging level (one of debug, info, warning, error, critical
"
)
parser
.
add_argument
(
"
--version
"
,
dest
=
"
print_version
"
,
action
=
"
store_true
"
,
default
=
"
false
"
,
help
=
"
print version id of this Hdlmake build
"
)
default
=
"
info
"
,
help
=
"
set logging level (one of debug, info, warning, error, critical
"
)
options
=
parser
.
parse_args
()
# Setting global variable (global_mod.py)
global_mod
.
options
=
options
#HANDLE PROJECT INDEPENDENT OPTIONS
if
options
.
manifest_help
is
True
:
from
manifest_parser
import
ManifestParser
ManifestParser
().
help
()
quit
()
if
options
.
check_env
is
True
:
env
=
Env
(
options
,
None
)
env
.
check
(
verbose
=
True
)
quit
()
if
options
.
print_version
is
True
:
print
(
"
Hdlmake build
"
+
BUILD_ID
)
quit
()
numeric_level
=
getattr
(
logging
,
options
.
log
.
upper
(),
None
)
if
not
isinstance
(
numeric_level
,
int
):
prin
t
(
'
Invalid log level: %s
'
%
options
.
log
)
sys
.
exi
t
(
'
Invalid log level: %s
'
%
options
.
log
)
logging
.
basicConfig
(
format
=
"
%(levelname)s %(funcName)s %(filename)s:%(lineno)d: %(message)s
"
,
level
=
numeric_level
)
logging
.
debug
(
'
1
'
)
logging
.
basicConfig
(
format
=
"
%(levelname)s %(funcName)s() %(filename)s:%(lineno)d: %(message)s
"
,
level
=
numeric_level
)
logging
.
debug
(
str
(
options
))
pool
=
ModulePool
()
pool
.
new_module
(
parent
=
None
,
url
=
os
.
getcwd
(),
source
=
"
local
"
,
fetchto
=
"
.
"
,
process_manifest
=
False
)
modules_
pool
=
ModulePool
()
modules_
pool
.
new_module
(
parent
=
None
,
url
=
os
.
getcwd
(),
source
=
"
local
"
,
fetchto
=
"
.
"
,
process_manifest
=
False
)
# Setting top_module as top module of design (ModulePool class)
if
pool
.
get_top_module
().
manifest
is
None
:
if
modules_
pool
.
get_top_module
().
manifest
is
None
:
logging
.
info
(
"
No manifest found. At least an empty one is needed
"
)
logging
.
info
(
"
To see some help, type hdlmake --help
"
)
quit
(
)
sys
.
exit
(
"
Exiting
"
)
# Setting global variable (global_mod.py)
global_mod
.
top_module
=
pool
.
get_top_module
()
global_mod
.
top_module
=
modules_
pool
.
get_top_module
()
global_mod
.
global_target
=
global_mod
.
top_module
.
target
global_mod
.
mod_pool
=
pool
global_mod
.
mod_pool
=
modules_
pool
env
=
Env
(
options
,
global_mod
.
top_module
)
global_mod
.
env
=
env
global_mod
.
env
.
check
()
pool
.
process_top_module_manifest
()
from
hdlmake_kernel
import
HdlmakeKernel
kernel
=
HdlmakeKernel
(
modules_pool
=
pool
,
options
=
options
,
env
=
env
)
options_kernel_mapping
=
{
"
fetch
"
:
"
fetch
"
,
"
ise_proj
"
:
"
generate_ise_project
"
,
"
quartus_proj
"
:
"
generate_quartus_project
"
,
"
make_fetch
"
:
"
generate_fetch_makefile
"
,
"
make_ise
"
:
"
generate_ise_makefile
"
,
"
make_sim
"
:
"
generate_simulation_makefile
"
,
"
make_remote
"
:
"
generate_remote_synthesis_makefile
"
,
"
list
"
:
"
list_modules
"
,
"
clean
"
:
"
clean_modules
"
,
"
merge_cores
"
:
"
merge_cores
"
}
sth_chosen
=
False
import
traceback
for
option
,
function
in
options_kernel_mapping
.
items
():
try
:
is_set
=
getattr
(
options
,
option
)
if
is_set
:
sth_chosen
=
True
getattr
(
kernel
,
function
)()
except
Exception
,
unknown_error
:
logging
.
error
(
"
Oooops! We
'
ve got an error. Here is the appropriate info:
\n
"
)
print
(
"
Hdlmake build
"
+
BUILD_ID
)
print
(
str
(
unknown_error
))
traceback
.
print_exc
()
if
not
sth_chosen
:
logging
.
info
(
"
No option selected. Running automatic flow
"
)
logging
.
info
(
"
To see some help, type hdlmake --help
"
)
kernel
.
run
()
modules_pool
.
process_top_module_manifest
()
if
options
.
command
==
"
check-env
"
:
env
.
check
(
verbose
=
True
)
quit
()
elif
options
.
command
==
"
manifest-help
"
:
ManifestParser
().
print_help
()
quit
()
elif
options
.
command
==
"
make-sim
"
:
action
=
GenerateSimulationMakefile
elif
options
.
command
==
"
make-fetch
"
:
action
=
GenerateFetchMakefile
elif
options
.
command
==
"
make-ise
"
:
action
=
GenerateISEMakefile
elif
options
.
command
==
"
make-remote
"
:
action
=
GenerateRemoteSynthesisMakefile
elif
options
.
command
==
"
fetch
"
:
action
=
FetchModules
elif
options
.
command
==
"
clean
"
:
action
=
CleanModules
elif
options
.
command
==
"
list-mods
"
:
action
=
ListModules
elif
options
.
command
==
"
list-files
"
:
action
=
ListFiles
elif
options
.
command
==
"
merge-cores
"
:
action
=
MergeCores
elif
options
.
command
==
"
ise-proj
"
:
action
=
GenerateISEProject
elif
options
.
command
==
"
quartus-proj
"
:
action
=
GenerateQuartusProject
elif
options
.
command
==
"
version
"
:
print
(
"
Hdlmake build
"
+
BUILD_ID
)
quit
()
action_instance
=
action
(
modules_pool
=
modules_pool
,
options
=
options
,
env
=
env
)
try
:
action_instance
.
run
()
except
Exception
as
e
:
import
traceback
logging
.
error
(
e
)
print
(
"
Trace:
"
)
traceback
.
print_exc
()
if
__name__
==
"
__main__
"
:
main
()
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment