How does lattice determine signal type?
There should be a second file, a Logical Preference File (*.lpf). Within this file such constrains are set

Understanding Preferences (LPF)
The LPF contains all the design
constraints, including timing preferences that you specify for driving
MAP and PAR using Diamond’s preference language. Although you can add
or modify preferences before MAP, after MAP, or after PAR, the
after-MAP or after-PAR changes effectively reset the flow, and changes
must be implemented by rerunning the MAP and PAR processes Design
constraints can also be set by using attributes and directives in the
HDL code. As explained previously, they are converted to EDIF
properties by logic synthesis, and then carried over into the NGD
database. They can then be viewed in Spreadsheet View or Package View.
If the constraints are modified in these views, they will be included
in the LPF, and these modified preferences will take precedence over
the attributes in the HDL

http://www.latticesemi.com/~/media/LatticeSemi/Documents/UserManuals/1D/design_planning_document.pdf?document_id=45589