siliconcompiler 0.26.5__py3-none-any.whl → 0.27.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. siliconcompiler/_metadata.py +1 -1
  2. siliconcompiler/apps/sc.py +7 -5
  3. siliconcompiler/apps/sc_issue.py +2 -16
  4. siliconcompiler/checklists/oh_tapeout.py +2 -2
  5. siliconcompiler/core.py +104 -56
  6. siliconcompiler/flows/_common.py +2 -2
  7. siliconcompiler/flows/asicflow.py +4 -5
  8. siliconcompiler/flows/asictopflow.py +3 -3
  9. siliconcompiler/flows/dvflow.py +3 -4
  10. siliconcompiler/flows/fpgaflow.py +4 -8
  11. siliconcompiler/flows/generate_openroad_rcx.py +3 -3
  12. siliconcompiler/flows/lintflow.py +3 -3
  13. siliconcompiler/flows/screenshotflow.py +3 -3
  14. siliconcompiler/flows/showflow.py +11 -6
  15. siliconcompiler/flows/signoffflow.py +3 -3
  16. siliconcompiler/flows/synflow.py +4 -5
  17. siliconcompiler/fpgas/lattice_ice40.py +3 -4
  18. siliconcompiler/fpgas/vpr_example.py +3 -4
  19. siliconcompiler/scheduler/send_messages.py +2 -1
  20. siliconcompiler/schema/schema_cfg.py +1 -14
  21. siliconcompiler/schema/schema_obj.py +35 -24
  22. siliconcompiler/sphinx_ext/dynamicgen.py +4 -4
  23. siliconcompiler/targets/asic_demo.py +1 -1
  24. siliconcompiler/targets/fpgaflow_demo.py +1 -1
  25. siliconcompiler/tools/klayout/klayout.py +2 -1
  26. siliconcompiler/tools/magic/magic.py +2 -1
  27. siliconcompiler/tools/openroad/openroad.py +2 -1
  28. siliconcompiler/tools/opensta/__init__.py +2 -1
  29. siliconcompiler/tools/verilator/verilator.py +2 -1
  30. siliconcompiler/tools/vivado/vivado.py +2 -1
  31. siliconcompiler/tools/vpr/vpr.py +2 -1
  32. siliconcompiler/tools/yosys/syn_asic.py +2 -1
  33. siliconcompiler/tools/yosys/syn_fpga.py +2 -1
  34. siliconcompiler/tools/yosys/yosys.py +2 -1
  35. siliconcompiler/use.py +20 -20
  36. {siliconcompiler-0.26.5.dist-info → siliconcompiler-0.27.1.dist-info}/METADATA +10 -8
  37. {siliconcompiler-0.26.5.dist-info → siliconcompiler-0.27.1.dist-info}/RECORD +41 -41
  38. {siliconcompiler-0.26.5.dist-info → siliconcompiler-0.27.1.dist-info}/WHEEL +1 -1
  39. {siliconcompiler-0.26.5.dist-info → siliconcompiler-0.27.1.dist-info}/LICENSE +0 -0
  40. {siliconcompiler-0.26.5.dist-info → siliconcompiler-0.27.1.dist-info}/entry_points.txt +0 -0
  41. {siliconcompiler-0.26.5.dist-info → siliconcompiler-0.27.1.dist-info}/top_level.txt +0 -0
@@ -15,14 +15,13 @@ from siliconcompiler.tools.builtin import minimum
15
15
  def make_docs(chip):
16
16
  n = 3
17
17
  _make_docs(chip)
18
- return setup(chip, syn_np=n, timing_np=n)
18
+ return setup(syn_np=n, timing_np=n)
19
19
 
20
20
 
21
21
  ###########################################################################
22
22
  # Flowgraph Setup
23
23
  ############################################################################
24
- def setup(chip,
25
- flowname='synflow',
24
+ def setup(flowname='synflow',
26
25
  syn_np=1,
27
26
  timing_np=1):
28
27
  '''
@@ -44,7 +43,7 @@ def setup(chip,
44
43
  * timing_np : Number of parallel timing jobs to launch
45
44
  '''
46
45
 
47
- flow = siliconcompiler.Flow(chip, flowname)
46
+ flow = siliconcompiler.Flow(flowname)
48
47
 
49
48
  # Linear flow, up until branch to run parallel verification steps.
50
49
  longpipe = ['syn',
@@ -80,7 +79,7 @@ def setup(chip,
80
79
  flowtasks.append((step, tasks[step]))
81
80
 
82
81
  # Programmatically build linear portion of flowgraph and fanin/fanout args
83
- prevstep = setup_multiple_frontends(chip, flow)
82
+ prevstep = setup_multiple_frontends(flow)
84
83
  for step, task in flowtasks:
85
84
  fanout = 1
86
85
  if step in np:
@@ -5,7 +5,7 @@ from siliconcompiler.utils import register_sc_data_source
5
5
  ####################################################
6
6
  # Setup for ICE40 Family FPGAs
7
7
  ####################################################
8
- def setup(chip):
8
+ def setup():
9
9
  '''
10
10
  Lattice ICE40 FPGAs are a family of small parts
11
11
  made by Lattice Semiconductor. A fully open source
@@ -23,10 +23,9 @@ def setup(chip):
23
23
  "ice40up5k-sg48",
24
24
  ]
25
25
 
26
- register_sc_data_source(chip)
27
-
28
26
  for part_name in all_part_names:
29
- fpga = siliconcompiler.FPGA(chip, part_name, package='siliconcompiler_data')
27
+ fpga = siliconcompiler.FPGA(part_name, package='siliconcompiler_data')
28
+ register_sc_data_source(fpga)
30
29
 
31
30
  fpga.set('fpga', part_name, 'vendor', vendor)
32
31
  fpga.set('fpga', part_name, 'lutsize', lut_size)
@@ -6,7 +6,7 @@ from siliconcompiler.utils import register_sc_data_source
6
6
  ####################################################
7
7
  # Setup for vpr_example Family FPGAs
8
8
  ####################################################
9
- def setup(chip):
9
+ def setup():
10
10
  '''
11
11
  The vpr_example FPGA family is a set of
12
12
  open source architectures used as illustrative
@@ -36,11 +36,10 @@ def setup(chip):
36
36
  'example_arch_X030Y030',
37
37
  ]
38
38
 
39
- register_sc_data_source(chip)
40
-
41
39
  # Settings common to all parts in family
42
40
  for part_name in all_part_names:
43
- fpga = siliconcompiler.FPGA(chip, part_name, package='siliconcompiler_data')
41
+ fpga = siliconcompiler.FPGA(part_name, package='siliconcompiler_data')
42
+ register_sc_data_source(fpga)
44
43
 
45
44
  fpga.set('fpga', part_name, 'vendor', vendor)
46
45
 
@@ -12,6 +12,7 @@ import fastjsonschema
12
12
  from pathlib import Path
13
13
  from siliconcompiler.flowgraph import get_executed_nodes
14
14
  import uuid
15
+ from siliconcompiler.targets import freepdk45_demo
15
16
 
16
17
 
17
18
  # Compile validation code for API request bodies.
@@ -172,7 +173,7 @@ def send(chip, msg_type, step, index):
172
173
  if __name__ == "__main__":
173
174
  from siliconcompiler import Chip
174
175
  chip = Chip('test')
175
- chip.load_target("freepdk45_demo")
176
+ chip.use(freepdk45_demo)
176
177
  chip.set('option', 'scheduler', 'msgevent', 'ALL')
177
178
  # chip.set('option', 'scheduler', 'msgcontact', 'fillin')
178
179
  send(chip, "BEGIN", "import", "0")
@@ -10,7 +10,7 @@ try:
10
10
  except ImportError:
11
11
  from siliconcompiler.schema.utils import trim
12
12
 
13
- SCHEMA_VERSION = '0.44.3'
13
+ SCHEMA_VERSION = '0.44.4'
14
14
 
15
15
  #############################################################################
16
16
  # PARAM DEFINITION
@@ -2540,19 +2540,6 @@ def schema_option(cfg):
2540
2540
  `Unix 'nice' <https://en.wikipedia.org/wiki/Nice_(Unix)>`_.""")
2541
2541
 
2542
2542
  # Compilation
2543
- scparam(cfg, ['option', 'target'],
2544
- sctype='str',
2545
- scope='job',
2546
- shorthelp="Compilation target",
2547
- switch="-target <str>",
2548
- example=["cli: -target freepdk45_demo",
2549
- "api: chip.set('option', 'target', 'freepdk45_demo')"],
2550
- schelp="""
2551
- Sets a target module to be used for compilation. The target
2552
- module must set up all parameters needed. The target module
2553
- may load multiple flows and libraries.
2554
- """)
2555
-
2556
2543
  scparam(cfg, ['option', 'pdk'],
2557
2544
  sctype='str',
2558
2545
  scope='job',
@@ -5,7 +5,6 @@
5
5
  # that have isolated Python environments.
6
6
 
7
7
  import copy
8
- import json
9
8
  import logging
10
9
  import os
11
10
  import re
@@ -14,6 +13,13 @@ import argparse
14
13
  import sys
15
14
  import shlex
16
15
 
16
+ try:
17
+ import orjson as json
18
+ _has_orjson = True
19
+ except ModuleNotFoundError:
20
+ import json
21
+ _has_orjson = False
22
+
17
23
  try:
18
24
  import gzip
19
25
  _has_gzip = True
@@ -223,7 +229,7 @@ class Schema:
223
229
 
224
230
  try:
225
231
  if re.search(r'(\.json|\.sup)(\.gz)*$', filepath, flags=re.IGNORECASE):
226
- localcfg = json.load(fin)
232
+ localcfg = json.loads(fin.read())
227
233
  elif re.search(r'(\.yaml|\.yml)(\.gz)*$', filepath, flags=re.IGNORECASE):
228
234
  if not _has_yaml:
229
235
  raise ImportError('yaml package required to read YAML manifest')
@@ -1023,7 +1029,11 @@ class Schema:
1023
1029
  localcfg = {**self.cfg}
1024
1030
  if self.__journal is not None:
1025
1031
  localcfg['__journal__'] = self.__journal
1026
- fout.write(json.dumps(localcfg, indent=4))
1032
+ if _has_orjson:
1033
+ manifest_str = json.dumps(localcfg, option=json.OPT_INDENT_2).decode()
1034
+ else:
1035
+ manifest_str = json.dumps(localcfg, indent=2)
1036
+ fout.write(manifest_str)
1027
1037
 
1028
1038
  ###########################################################################
1029
1039
  def write_yaml(self, fout):
@@ -1467,6 +1477,26 @@ class Schema:
1467
1477
  help=helpstr,
1468
1478
  default=argparse.SUPPRESS)
1469
1479
 
1480
+ print_additional_arg_value = {}
1481
+ if additional_args:
1482
+ # Add additional user specified arguments
1483
+ arg_dests = []
1484
+ for arg, arg_detail in additional_args.items():
1485
+ do_print = True
1486
+ if "sc_print" in arg_detail:
1487
+ do_print = arg_detail["sc_print"]
1488
+ del arg_detail["sc_print"]
1489
+ argument = parser.add_argument(arg, **arg_detail)
1490
+ print_additional_arg_value[argument.dest] = do_print
1491
+
1492
+ arg_dests.append(argument.dest)
1493
+ used_switches.add(arg)
1494
+ # rewrite additional_args with new dest information
1495
+ additional_args = arg_dests
1496
+
1497
+ if version:
1498
+ parser.add_argument('-version', action='version', version=version)
1499
+
1470
1500
  # Check if there are invalid switches
1471
1501
  if switchlist:
1472
1502
  for switch in switchlist:
@@ -1503,25 +1533,6 @@ class Schema:
1503
1533
  else:
1504
1534
  scargs.append(argument)
1505
1535
 
1506
- if version:
1507
- parser.add_argument('-version', action='version', version=version)
1508
-
1509
- print_additional_arg_value = {}
1510
- if additional_args:
1511
- # Add additional user specified arguments
1512
- arg_dests = []
1513
- for arg, arg_detail in additional_args.items():
1514
- do_print = True
1515
- if "sc_print" in arg_detail:
1516
- do_print = arg_detail["sc_print"]
1517
- del arg_detail["sc_print"]
1518
- argument = parser.add_argument(arg, **arg_detail)
1519
- print_additional_arg_value[argument.dest] = do_print
1520
-
1521
- arg_dests.append(argument.dest)
1522
- # rewrite additional_args with new dest information
1523
- additional_args = arg_dests
1524
-
1525
1536
  # Grab argument from pre-process sysargs
1526
1537
  cmdargs = vars(parser.parse_args(scargs))
1527
1538
 
@@ -1535,7 +1546,7 @@ class Schema:
1535
1546
  for arg in additional_args:
1536
1547
  if arg in cmdargs:
1537
1548
  val = cmdargs[arg]
1538
- if print_additional_arg_value[arg]:
1549
+ if print_additional_arg_value[arg] and val:
1539
1550
  msg = f'Command line argument entered: "{arg}" Value: {val}'
1540
1551
  self.logger.info(msg)
1541
1552
  extra_params[arg] = val
@@ -1656,7 +1667,7 @@ class Schema:
1656
1667
  self.set(*args, val, step=step, index=index, clobber=True)
1657
1668
 
1658
1669
  if post_process:
1659
- post_process(cmdargs)
1670
+ extra_params = post_process(cmdargs, extra_params)
1660
1671
 
1661
1672
  return extra_params
1662
1673
 
@@ -386,7 +386,7 @@ class DynamicGen(SphinxDirective):
386
386
  setup = self.get_setup_method(module)
387
387
  if not setup:
388
388
  return None
389
- new_chip = setup(chip)
389
+ new_chip = setup()
390
390
  if new_chip:
391
391
  return new_chip
392
392
  else:
@@ -399,7 +399,7 @@ class DynamicGen(SphinxDirective):
399
399
  if docs_chip and docs_configured:
400
400
  return docs_chip
401
401
 
402
- return self._handle_setup(chip, module)
402
+ return self._handle_setup(module)
403
403
 
404
404
  def get_ref_prefix(self):
405
405
  return self.REF_PREFIX
@@ -635,7 +635,7 @@ class ToolGen(DynamicGen):
635
635
  if toolmodule:
636
636
  return chip
637
637
  else:
638
- return self._handle_setup(chip, module)
638
+ return self._handle_setup(module)
639
639
 
640
640
  def display_config(self, chip, modname):
641
641
  '''Display config under `eda, <modname>` in a single table.'''
@@ -726,7 +726,7 @@ class ToolGen(DynamicGen):
726
726
  s += p
727
727
 
728
728
  try:
729
- task_setup(chip)
729
+ task_setup()
730
730
 
731
731
  config = build_section("Configuration", self.get_configuration_ref_key(toolname,
732
732
  taskname))
@@ -17,7 +17,7 @@ def setup(chip):
17
17
  chip.set('design', design)
18
18
 
19
19
  # Load the Sky130 PDK/standard cell library target.
20
- chip.load_target(skywater130_demo)
20
+ chip.use(skywater130_demo)
21
21
 
22
22
  # Set quiet flag
23
23
  chip.set('option', 'quiet', True, clobber=False)
@@ -34,7 +34,7 @@ def setup(chip):
34
34
  raise SiliconCompilerError(f'{part_name} has not been loaded', chip=chip)
35
35
 
36
36
  # 3. Load flow
37
- chip.use(fpgaflow)
37
+ chip.use(fpgaflow, partname=part_name)
38
38
 
39
39
  # 4. Select default flow
40
40
  chip.set('option', 'flow', 'fpgaflow', clobber=False)
@@ -15,13 +15,14 @@ from pathlib import Path
15
15
  import platform
16
16
  import shutil
17
17
  from siliconcompiler.tools._common import get_tool_task
18
+ from siliconcompiler.targets import freepdk45_demo
18
19
 
19
20
 
20
21
  ####################################################################
21
22
  # Make Docs
22
23
  ####################################################################
23
24
  def make_docs(chip):
24
- chip.load_target("freepdk45_demo")
25
+ chip.use(freepdk45_demo)
25
26
 
26
27
 
27
28
  ####################################################################
@@ -11,13 +11,14 @@ Sources: https://github.com/RTimothyEdwards/magic
11
11
 
12
12
  import os
13
13
  from siliconcompiler.tools._common import input_provides, get_tool_task
14
+ from siliconcompiler.targets import freepdk45_demo
14
15
 
15
16
 
16
17
  ####################################################################
17
18
  # Make Docs
18
19
  ####################################################################
19
20
  def make_docs(chip):
20
- chip.load_target("freepdk45_demo")
21
+ chip.use(freepdk45_demo)
21
22
 
22
23
 
23
24
  ################################
@@ -18,13 +18,14 @@ from siliconcompiler import utils
18
18
  from siliconcompiler.tools._common import input_provides, add_common_file, \
19
19
  get_tool_task, record_metric
20
20
  from siliconcompiler.tools._common.asic import get_mainlib, set_tool_task_var, get_libraries
21
+ from siliconcompiler.targets import asap7_demo
21
22
 
22
23
 
23
24
  ####################################################################
24
25
  # Make Docs
25
26
  ####################################################################
26
27
  def make_docs(chip):
27
- chip.load_target("asap7_demo")
28
+ chip.use(asap7_demo)
28
29
 
29
30
 
30
31
  ################################
@@ -12,13 +12,14 @@ import os
12
12
  from siliconcompiler.tools.openroad.openroad import get_library_timing_keypaths
13
13
  from siliconcompiler.tools._common import get_tool_task
14
14
  from siliconcompiler.tools._common.asic import get_libraries
15
+ from siliconcompiler.targets import asap7_demo
15
16
 
16
17
 
17
18
  ####################################################################
18
19
  # Make Docs
19
20
  ####################################################################
20
21
  def make_docs(chip):
21
- chip.load_target("asap7_demo")
22
+ chip.use(asap7_demo)
22
23
 
23
24
 
24
25
  ################################
@@ -33,13 +33,14 @@ from siliconcompiler.tools._common import (
33
33
  get_tool_task,
34
34
  input_provides
35
35
  )
36
+ from siliconcompiler.targets import freepdk45_demo
36
37
 
37
38
 
38
39
  ####################################################################
39
40
  # Make Docs
40
41
  ####################################################################
41
42
  def make_docs(chip):
42
- chip.load_target("freepdk45_demo")
43
+ chip.use(freepdk45_demo)
43
44
 
44
45
 
45
46
  def setup(chip):
@@ -10,11 +10,12 @@ import os
10
10
  import re
11
11
  from siliconcompiler import sc_open
12
12
  from siliconcompiler.tools._common import record_metric
13
+ from siliconcompiler.targets import fpgaflow_demo
13
14
 
14
15
 
15
16
  def make_docs(chip):
16
17
  chip.set('fpga', 'partname', 'ice40up5k-sg48')
17
- chip.load_target("fpgaflow_demo")
18
+ chip.use(fpgaflow_demo)
18
19
 
19
20
 
20
21
  tool = 'vivado'
@@ -31,8 +31,9 @@ __block_file = "reports/block_usage.json"
31
31
  # Make Docs
32
32
  ######################################################################
33
33
  def make_docs(chip):
34
+ from siliconcompiler.targets import fpgaflow_demo
34
35
  chip.set('fpga', 'partname', 'example_arch_X005Y005')
35
- chip.load_target("fpgaflow_demo")
36
+ chip.use(fpgaflow_demo)
36
37
  setup_tool(chip)
37
38
  return chip
38
39
 
@@ -7,10 +7,11 @@ from siliconcompiler import sc_open
7
7
  from siliconcompiler import utils
8
8
  from siliconcompiler.tools._common.asic import set_tool_task_var, get_libraries, get_mainlib
9
9
  from siliconcompiler.tools._common import get_tool_task
10
+ from siliconcompiler.targets import asap7_demo
10
11
 
11
12
 
12
13
  def make_docs(chip):
13
- chip.load_target("asap7_demo")
14
+ chip.use(asap7_demo)
14
15
 
15
16
 
16
17
  def setup(chip):
@@ -2,6 +2,7 @@ from siliconcompiler.tools.yosys.yosys import syn_setup, syn_post_process
2
2
  import json
3
3
  from siliconcompiler import sc_open
4
4
  from siliconcompiler.tools._common import get_tool_task, record_metric
5
+ from siliconcompiler.targets import fpgaflow_demo
5
6
 
6
7
 
7
8
  ######################################################################
@@ -9,7 +10,7 @@ from siliconcompiler.tools._common import get_tool_task, record_metric
9
10
  ######################################################################
10
11
  def make_docs(chip):
11
12
  chip.set('fpga', 'partname', 'ice40up5k-sg48')
12
- chip.load_target("fpgaflow_demo")
13
+ chip.use(fpgaflow_demo)
13
14
 
14
15
 
15
16
  def setup(chip):
@@ -17,13 +17,14 @@ import re
17
17
  import json
18
18
  from siliconcompiler import sc_open
19
19
  from siliconcompiler.tools._common import get_tool_task, record_metric
20
+ from siliconcompiler.targets import asap7_demo
20
21
 
21
22
 
22
23
  ######################################################################
23
24
  # Make Docs
24
25
  ######################################################################
25
26
  def make_docs(chip):
26
- chip.load_target("asap7_demo")
27
+ chip.use(asap7_demo)
27
28
 
28
29
 
29
30
  ################################
siliconcompiler/use.py CHANGED
@@ -4,12 +4,15 @@ from siliconcompiler import Chip
4
4
 
5
5
 
6
6
  class PackageChip(Chip):
7
- def __init__(self, chip, name, package=None):
7
+ def __init__(self, *args, package=None):
8
8
  # Start with None as init setting will not depend on package
9
9
  self.__package = None
10
10
 
11
+ name = args[-1]
11
12
  super().__init__(name)
12
- self.logger = chip.logger
13
+
14
+ if len(args) == 2:
15
+ self.logger.warning(f'passing Chip object to {type(self)} is deprecated')
13
16
 
14
17
  path = None
15
18
  ref = None
@@ -83,11 +86,10 @@ class PDK(PackageChip):
83
86
  This inherits all methods from :class:`~siliconcompiler.Chip`.
84
87
 
85
88
  Args:
86
- chip (Chip): A real only copy of the parent chip.
87
89
  name (string): Name of the PDK.
88
90
  package (string): Name of the data source
89
91
  Examples:
90
- >>> siliconcompiler.PDK(chip, "asap7")
92
+ >>> siliconcompiler.PDK("asap7")
91
93
  Creates a flow object with name "asap7".
92
94
  """
93
95
 
@@ -101,11 +103,10 @@ class FPGA(PackageChip):
101
103
  This inherits all methods from :class:`~siliconcompiler.Chip`.
102
104
 
103
105
  Args:
104
- chip (Chip): A real only copy of the parent chip.
105
106
  name (string): Name of the FPGA.
106
107
  package (string): Name of the data source
107
108
  Examples:
108
- >>> siliconcompiler.FPGA(chip, "lattice_ice40")
109
+ >>> siliconcompiler.FPGA("lattice_ice40")
109
110
  Creates a flow object with name "lattice_ice40".
110
111
  """
111
112
 
@@ -119,17 +120,16 @@ class Library(PackageChip):
119
120
  This inherits all methods from :class:`~siliconcompiler.Chip`.
120
121
 
121
122
  Args:
122
- chip (Chip): A real only copy of the parent chip.
123
123
  name (string): Name of the library.
124
124
  package (string): Name of the data source
125
125
  auto_enable (boolean): If True, will automatically be added to ['option','library'].
126
126
  This is only valid for non-logiclibs and macrolibs
127
127
  Examples:
128
- >>> siliconcompiler.Library(chip, "asap7sc7p5t")
128
+ >>> siliconcompiler.Library("asap7sc7p5t")
129
129
  Creates a library object with name "asap7sc7p5t".
130
130
  """
131
- def __init__(self, chip, name, package=None, auto_enable=False):
132
- super().__init__(chip, name, package=package)
131
+ def __init__(self, *args, package=None, auto_enable=False):
132
+ super().__init__(*args, package=package)
133
133
 
134
134
  self.__auto_enable = auto_enable
135
135
 
@@ -146,15 +146,15 @@ class Flow(Chip):
146
146
  This inherits all methods from :class:`~siliconcompiler.Chip`.
147
147
 
148
148
  Args:
149
- chip (Chip): A real only copy of the parent chip.
150
149
  name (string): Name of the flow.
151
150
  Examples:
152
- >>> siliconcompiler.Flow(chip, "asicflow")
151
+ >>> siliconcompiler.Flow("asicflow")
153
152
  Creates a flow object with name "asicflow".
154
153
  """
155
- def __init__(self, chip, name):
156
- super().__init__(name)
157
- self.logger = chip.logger
154
+ def __init__(self, *args):
155
+ super().__init__(args[-1])
156
+ if len(args) == 2:
157
+ self.logger.warning(f'passing Chip object to {type(self)} is deprecated')
158
158
 
159
159
 
160
160
  class Checklist(Chip):
@@ -166,12 +166,12 @@ class Checklist(Chip):
166
166
  This inherits all methods from :class:`~siliconcompiler.Chip`.
167
167
 
168
168
  Args:
169
- chip (Chip): A real only copy of the parent chip.
170
169
  name (string): Name of the checklist.
171
170
  Examples:
172
- >>> siliconcompiler.Checklist(chip, "tapeout")
171
+ >>> siliconcompiler.Checklist("tapeout")
173
172
  Creates a checklist object with name "tapeout".
174
173
  """
175
- def __init__(self, chip, name):
176
- super().__init__(name)
177
- self.logger = chip.logger
174
+ def __init__(self, *args):
175
+ super().__init__(args[-1])
176
+ if len(args) == 2:
177
+ self.logger.warning(f'passing Chip object to {type(self)} is deprecated')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: siliconcompiler
3
- Version: 0.26.5
3
+ Version: 0.27.1
4
4
  Summary: A compiler framework that automates translation from source code to silicon.
5
5
  Author-email: Andreas Olofsson <andreas.d.olofsson@gmail.com>
6
6
  License: Apache License 2.0
@@ -30,6 +30,7 @@ Requires-Dist: fasteners ==0.19
30
30
  Requires-Dist: fastjsonschema ==2.20.0
31
31
  Requires-Dist: docker ==7.1.0
32
32
  Requires-Dist: sc-surelog ==1.84.1
33
+ Requires-Dist: orjson ==3.10.7
33
34
  Requires-Dist: streamlit ==1.37.1
34
35
  Requires-Dist: streamlit-agraph ==0.0.45
35
36
  Requires-Dist: streamlit-tree-select ==0.0.5
@@ -90,15 +91,16 @@ SiliconCompiler is available as wheel packages on PyPI for macOS, Windows and
90
91
  Linux platforms. For working Python 3.8-3.12 environment, just use pip.
91
92
 
92
93
  ```sh
93
- python -m pip install --upgrade siliconcompiler
94
+ python3 -m pip install --upgrade siliconcompiler
94
95
  ```
95
96
 
96
- Converting RTL into DRC clean GDS takes less than 10 lines of simple Python code.
97
+ Converting RTL into DRC clean GDS takes 10 lines of simple Python code.
97
98
 
98
99
  ```python
99
- import siliconcompiler # import python package
100
- chip = siliconcompiler.Chip('heartbeat') # create chip object
101
- chip.load_target('skywater130_demo') # load a pre-defined target
100
+ from siliconcompiler import Chip # import python package
101
+ from siliconcompiler.targets import skywater130_demo
102
+ chip = Chip('heartbeat') # create chip object
103
+ chip.use(skywater130_demo) # load a pre-defined target
102
104
  chip.input('heartbeat.v') # set input sources
103
105
  chip.clock('clk', period=10) # set constraints
104
106
  chip.set('option','remote', True) # enable remote execution
@@ -161,8 +163,8 @@ To install the project from source (recommended for developers only).
161
163
  ```bash
162
164
  git clone https://github.com/siliconcompiler/siliconcompiler
163
165
  cd siliconcompiler
164
- python -m pip install -e . # Required install step
165
- python -m pip install -e .[docs,test] # Optional install step for generating docs and running tests
166
+ python3 -m pip install -e . # Required install step
167
+ python3 -m pip install -e .[docs,test] # Optional install step for generating docs and running tests
166
168
  ```
167
169
 
168
170
  # EDA Tool Installation