Skip to content

chore(develop): sync master - #1121

Merged
celox-bot[bot] merged 17 commits into
developfrom
integration/master-to-develop
Oct 8, 2026
Merged

celox-bot[bot] merged 17 commits into
developfrom
integration/master-to-develop

Conversation

@celox-bot

@celox-bot celox-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Bring stable-trunk changes into the Veryl HEAD compatibility lane.

This PR is managed automatically through a dedicated synchronization branch so the develop merge queue never holds master itself as a pull request head. A conflict is actionable and must be resolved without replacing the Veryl HEAD dependency on develop.

tignear and others added 17 commits October 8, 2026 16:19
Before analysis, every interface is expanded into the modules that use it,
as syntax-guided source edits like the package inlining. An interface
instance becomes renamed signals, localparams and copies of its logic (run
once per element for an instance array); an interface port becomes one port
per member in the modport direction, plus parameters, localparams/typedefs in
the module header and the imported functions. Ports without a modport take
the direction their module or a child writes, and modules with generic
interface ports are copied per bound interface.

The SystemVerilog arm of 30 Veryl interface cases now passes, including the
ones where the Veryl analyzer drops interface logic. A new SystemVerilog suite
group covers constructs Veryl does not emit; Verilator agrees on all of them,
and Icarus 13.0, which cannot compile interface ports, gets a reviewed
exclusion.
- Make a body `parameter` of an interface without a parameter port list
  overridable, in declaration order.
- Expose members that imported functions assign as outputs.
- Reject identifiers containing `$` in designs with interfaces.
- Reject declarations that shadow an interface instance or port.
- Allow interface ports that carry only parameters or functions.
- Inherit the interface header across grouped ANSI ports.
- Reject writes through a port without a modport inside a generate construct.
- Reject bare handles in ordinary connections of a child instantiation.
- Rewrite interface references inside element selects, connection selects
  and instance array dimensions.
- Declare the functions that interface declarations call with every
  expansion, and keep functions without member accesses for instance and
  port arrays; reject array logic calling one that accesses members.
- Infer writes through output, inout and ref subroutine arguments, and
  reject writes inside module subroutines through a port without a modport.
- Name instance array loop helpers so they cannot collide with items.
- Reject escaped identifiers that are not simple identifiers.
- Count actuals of ordinary child output, inout and ref ports as writes,
  and reject members passed to modules whose port directions are unknown.
- Resolve subroutine argument directions in the declaring scope.
- Reject duplicate interface declarations and interfaces sharing a module
  name.
- Copy only the items of an interface generate region.
- Track members that interface functions write through subroutine
  arguments.
- Count subroutine names in the shadowing checks.
- Reject duplicate modport declarations.
- Reject package items of one name that reach a module from two packages
  through interface imports, or that a module declaration hides.
- Resolve interface handles by their declaring generate block, so sibling
  blocks may declare instances of one name.
- Resolve the qualifier of a qualified subroutine call to its interface.
- Let a module call only the functions its modport imports.
- Carry compilation-unit imports that an interface relies on into modules
  of other files.
- Insert generic module copies beside the original module.
…ate items

- Wrap the items replacing a bare generate item in a block.
- Copy a compilation-unit import that follows the consuming module.
- Resolve unqualified package calls only through visible imports.
- Drive members through a modport port only for imported functions that the
  module or a child calls.
- Reject enum types anywhere in an interface.
…dports

- Resolve a port name shadowed by a nested interface instance lexically
  when inferring port directions.
- Validate modport members and imported functions.
- Keep implicit named connections to ordinary ports of interface-bearing
  children.
- Check package-import collisions only against declarations outside
  subroutines and procedural blocks.
- Reject member references in declarations that a port carries, keep
  members passed for imported functions inaccessible, and emit header
  imports before an added parameter port list.
…ations

- Treat the destination of $readmemh and $readmemb as a write.
- Record every member of a writable concatenation actual, outside selects.
- Resolve unqualified package calls with the imports of the call's lexical
  scope.
… items

- Reject an implicit net that a continuous assignment declares in an
  interface.
- Treat memory loads in interface functions as member writes.
- Reject a member or function listed twice in one modport.
…larations

- Resolve the interface of a call qualifier at the call's scope.
- Reject duplicate interface-scope declarations and unknown parameter
  overrides of interface instances.
- Separate the expansions of instances declared together.
- Check package-import collisions against module-scope imports only.
…-file macros

- Resolve compilation-unit subroutines only in the caller's source file.
- Ignore module type names of instantiations when scanning for handles.
- Reject copying an interface that uses macros into another source file.
…eferences

- Resolve every generic port of a clone from its bindings when inferring
  directions, and key expansions by them.
- Exclude struct and union members from handle and declaration scans.
- Reject macros copied before their definition, references to implicit
  generate block names, hierarchical references to instances through
  generate blocks, and extra empty interface connections.
- Pass a child's generic-port bindings to every expansion of the child.
- Reject macros and compiler directives in expanded interfaces, and
  compilation-unit items an interface uses from another file or an earlier
  module.
- Reject repeated parameter overrides of interface instances and omitted
  named interface-port connections.
- Limit the generate-qualified instance check to generate block qualifiers.
- Ignore qualified names when detecting compilation-unit references.
- Detect directives outside comments and string literals only.
- Require the whole qualifier chain of a generate-qualified use to name
  generate blocks.
- Always copy compilation-unit imports an interface uses into the module.
Celox-Sync-Automation: true
@celox-bot
celox-bot Bot enabled auto-merge October 8, 2026 16:18
@codspeed

codspeed Bot commented Oct 8, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 4 untouched benchmarks


Comparing integration/master-to-develop (c0210cf) with master (d353dae)1

Open in CodSpeed

Footnotes

  1. No successful run was found on develop (4d016ea) during the generation of this report, so master (d353dae) was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩

@celox-bot
celox-bot Bot added this pull request to the merge queue Oct 8, 2026
Merged via the queue into develop with commit fb02173 Oct 8, 2026
32 checks passed
@celox-bot
celox-bot Bot deleted the integration/master-to-develop branch October 8, 2026 17:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant