<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sfcX/src/main/antlr4, branch sfc-scala3</title>
<subtitle>Scala FIRRTL Compiler for chiselX</subtitle>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sfcX/'/>
<entry>
<title>Handle new keyword version as an identifier (#2550)</title>
<updated>2022-09-12T19:41:34+00:00</updated>
<author>
<name>Jack Koenig</name>
</author>
<published>2022-09-12T19:41:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sfcX/commit/?id=50a1230de1d68014cd88e4fcca2bdf3a5c94d6d3'/>
<id>50a1230de1d68014cd88e4fcca2bdf3a5c94d6d3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>FIRRTL version support (#2543)</title>
<updated>2022-08-26T14:52:04+00:00</updated>
<author>
<name>Zachary Yedidia</name>
</author>
<published>2022-08-26T14:52:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sfcX/commit/?id=19fe90bb0fd37457c47f3873392db5cbb9b87d38'/>
<id>19fe90bb0fd37457c47f3873392db5cbb9b87d38</id>
<content type='text'>
* Parse version and hardcode emitted version

* Throw error if version is too high

* Parse version even if rest is invalid

* Change pattern match to if statement

* Improve version grammar

* Update tests

* Remove outdated comment

* Simplify grammar and use version class

* Simplify and add no version test

* Fix for conflicting lexer rule</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Parse version and hardcode emitted version

* Throw error if version is too high

* Parse version even if rest is invalid

* Change pattern match to if statement

* Improve version grammar

* Update tests

* Remove outdated comment

* Simplify grammar and use version class

* Simplify and add no version test

* Fix for conflicting lexer rule</pre>
</div>
</content>
</entry>
<entry>
<title>Handle references better in ANTLR Parser</title>
<updated>2021-12-01T19:40:52+00:00</updated>
<author>
<name>Jack Koenig</name>
</author>
<published>2021-08-31T20:31:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sfcX/commit/?id=64a0ca2512199c55e51ec90dbd3ec7d563472255'/>
<id>64a0ca2512199c55e51ec90dbd3ec7d563472255</id>
<content type='text'>
Tweak the grammar to handle references without left-recursion. Also
split references and subreferences out from the regular expression rule
to make their parsing more efficient.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Tweak the grammar to handle references without left-recursion. Also
split references and subreferences out from the regular expression rule
to make their parsing more efficient.
</pre>
</div>
</content>
</entry>
<entry>
<title>Support parsing missing keywords as ids (#2381)</title>
<updated>2021-10-09T00:09:55+00:00</updated>
<author>
<name>Jack Koenig</name>
</author>
<published>2021-10-09T00:09:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sfcX/commit/?id=ef1d27a84addc46353884eb06ea18f4c68e6a808'/>
<id>ef1d27a84addc46353884eb06ea18f4c68e6a808</id>
<content type='text'>
Reset, AsyncReset, Interval, attach, assert, assume, and cover have all
been added as keywords but not added to the allowlist for parsing as
ids.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reset, AsyncReset, Interval, attach, assert, assume, and cover have all
been added as keywords but not added to the allowlist for parsing as
ids.</pre>
</div>
</content>
</entry>
<entry>
<title>Allow Side Effecting Statement to have Names (#2057)</title>
<updated>2021-02-17T20:16:52+00:00</updated>
<author>
<name>Kevin Laeufer</name>
</author>
<published>2021-02-17T20:16:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sfcX/commit/?id=5a89fca6090948d0a99c217a09c692e58a20d1df'/>
<id>5a89fca6090948d0a99c217a09c692e58a20d1df</id>
<content type='text'>
* firrtl: add optional statement labels for stop, printf, assert, assume and cover

* test: parsing of statement labels

* ir: ensure that name is properly retained

* SymbolTable: add support for labled statements

* test: parsing statement labels

* test: lower types name collisions with named statements

* ignore empty names

* Inline: deal with named and unnamed statements

* RemoveWires: treat stop, printf and verification statements as "others"

* test: fix InlineInstance tests

* DeadCodeEliminations: statements are now als declarations

* CheckHighForm: ensure that statement names are not used as references

* CheckSpec: throw error if statement name collides

* add pass to automatically add missing statement names

* check: make sure that two statements cannot have the same name

* stmtLabel -&gt; stmtName

* scalafmt

* add statement names to spec

* spec: meta data -&gt; metadata

* EnsureStatementNames: explain naming algorithm

* remove returns

* better namespace use

* ir: add CanBeReferenced trait

* ir: add newline as jack requested</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* firrtl: add optional statement labels for stop, printf, assert, assume and cover

* test: parsing of statement labels

* ir: ensure that name is properly retained

* SymbolTable: add support for labled statements

* test: parsing statement labels

* test: lower types name collisions with named statements

* ignore empty names

* Inline: deal with named and unnamed statements

* RemoveWires: treat stop, printf and verification statements as "others"

* test: fix InlineInstance tests

* DeadCodeEliminations: statements are now als declarations

* CheckHighForm: ensure that statement names are not used as references

* CheckSpec: throw error if statement name collides

* add pass to automatically add missing statement names

* check: make sure that two statements cannot have the same name

* stmtLabel -&gt; stmtName

* scalafmt

* add statement names to spec

* spec: meta data -&gt; metadata

* EnsureStatementNames: explain naming algorithm

* remove returns

* better namespace use

* ir: add CanBeReferenced trait

* ir: add newline as jack requested</pre>
</div>
</content>
</entry>
<entry>
<title>Change to Apache 2.0 License (#1901)</title>
<updated>2020-09-17T01:52:16+00:00</updated>
<author>
<name>Chick Markley</name>
</author>
<published>2020-09-17T01:52:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sfcX/commit/?id=ecb96e83324ea17cf38b7b90753d745d3c7f51bd'/>
<id>ecb96e83324ea17cf38b7b90753d745d3c7f51bd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Basic model checking API (#1653)</title>
<updated>2020-06-23T20:12:05+00:00</updated>
<author>
<name>Tom Alcorn</name>
</author>
<published>2020-06-23T20:12:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sfcX/commit/?id=8322316a2f7c7fe7dad72f413e75d6b4600823f0'/>
<id>8322316a2f7c7fe7dad72f413e75d6b4600823f0</id>
<content type='text'>
* Add assume, assert, cover statements
* Assert submodule assumptions
* Add warning when removing verification statements
* Remove System Verilog behaviour emitter warning
* Add option to disable AssertSubmoduleAssumptions
* Document verification statements in the spec

The syntax for the new statements is

    assert(clk, cond, en, msg)
    assume(clk, cond, en, msg)
    cover(clk, cond, en, msg)

With assert as a representative example, the semantics is as follows:
`clk` is the clock, `cond` is the expression being asserted, `en` is the
enable signal (if `en` is low then the assert is not checked) and `msg`
is a string message intended to be reported as an error message by the
model checker if the assertion fails.

In the Verilog emitter, the new statements are handled by a new
`formals` map, which groups the statements by clock domain. All model
checking statements are then emitted within the context of an `ifdef
FORMAL` block, which allows model checking tools (like Symbiyosys) to
utilize the statements while keeping them out of synthesis flows.

Co-authored-by: Albert Magyar &lt;albert.magyar@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Add assume, assert, cover statements
* Assert submodule assumptions
* Add warning when removing verification statements
* Remove System Verilog behaviour emitter warning
* Add option to disable AssertSubmoduleAssumptions
* Document verification statements in the spec

The syntax for the new statements is

    assert(clk, cond, en, msg)
    assume(clk, cond, en, msg)
    cover(clk, cond, en, msg)

With assert as a representative example, the semantics is as follows:
`clk` is the clock, `cond` is the expression being asserted, `en` is the
enable signal (if `en` is low then the assert is not checked) and `msg`
is a string message intended to be reported as an error message by the
model checker if the assertion fails.

In the Verilog emitter, the new statements are handled by a new
`formals` map, which groups the statements by clock domain. All model
checking statements are then emitted within the context of an `ifdef
FORMAL` block, which allows model checking tools (like Symbiyosys) to
utilize the statements while keeping them out of synthesis flows.

Co-authored-by: Albert Magyar &lt;albert.magyar@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Support octal and binary literal formats as described in the spec</title>
<updated>2020-03-26T18:14:28+00:00</updated>
<author>
<name>Albert Magyar</name>
</author>
<published>2020-03-25T19:24:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sfcX/commit/?id=4b3b5442bfe34502862eb070854aeef1e0cfc9c4'/>
<id>4b3b5442bfe34502862eb070854aeef1e0cfc9c4</id>
<content type='text'>
* Fixes #1464
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Fixes #1464
</pre>
</div>
</content>
</entry>
<entry>
<title>Add explicit EOF to top-level parser rule (#1217)</title>
<updated>2019-11-04T20:34:13+00:00</updated>
<author>
<name>Albert Magyar</name>
</author>
<published>2019-11-04T20:34:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sfcX/commit/?id=8f108c1aa8cac656da56b2505519db47080d5a26'/>
<id>8f108c1aa8cac656da56b2505519db47080d5a26</id>
<content type='text'>
* Fixes #1154
* Tests that #1154 example produces SyntaxErrorsException
* Generally helps catch trailing syntax errors
* Performance-neutral relative to previous grammar
* Recommended by antlr4 devs, can help performance in some cases
* See antlr/antlr4#1540</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Fixes #1154
* Tests that #1154 example produces SyntaxErrorsException
* Generally helps catch trailing syntax errors
* Performance-neutral relative to previous grammar
* Recommended by antlr4 devs, can help performance in some cases
* See antlr/antlr4#1540</pre>
</div>
</content>
</entry>
<entry>
<title>Upstream intervals (#870)</title>
<updated>2019-10-19T02:01:19+00:00</updated>
<author>
<name>Adam Izraelevitz</name>
</author>
<published>2019-10-19T02:01:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sfcX/commit/?id=fd981848c7d2a800a15f9acfbf33b57dd1c6225b'/>
<id>fd981848c7d2a800a15f9acfbf33b57dd1c6225b</id>
<content type='text'>
Major features:

- Added Interval type, as well as PrimOps asInterval, clip, wrap, and sqz.
- Changed PrimOp names: bpset -&gt; setp, bpshl -&gt; incp, bpshr -&gt; decp
- Refactored width/bound inferencer into a separate constraint solver
- Added transforms to infer, trim, and remove interval bounds
- Tests for said features

Plan to be released with 1.3</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Major features:

- Added Interval type, as well as PrimOps asInterval, clip, wrap, and sqz.
- Changed PrimOp names: bpset -&gt; setp, bpshl -&gt; incp, bpshr -&gt; decp
- Refactored width/bound inferencer into a separate constraint solver
- Added transforms to infer, trim, and remove interval bounds
- Tests for said features

Plan to be released with 1.3</pre>
</div>
</content>
</entry>
</feed>
