The port protocol attributes always_enabled and always_ready remove unnecessary ports. In all cases the compiler verifies that the attributes are correctly applied and generates an error if they are not.
The attribute always_enabled specifies that no enable signal will be generated for the associated interface methods. The methods will be executed on every clock cycle and the compiler verifies that the caller does this.
The attribute always_ready specifies that no ready signals will be generated. The compiler verifies that the associated interface methods are permanently ready. always_enabled implies always_ready.
(* always_enabled, always_ready *)
where string is the name of the method or subinterface the attribute is modifying. As with all attributes, they can be in a single statement, separated by a comma, or in separate statements.
The always_ready and always_enabled attributes can be associated with the method declarations, sub-interface declarations, or the interface declaration itself.
The attributes are applied when the interface is implemented within a module, not at the declaration of the interface.
interface IfcCabinCntrl#(type floors, type direction);
// action method destinationFloor